Есть несколько возможных способов подойти к этому.
Одним из них является использование класса FileIOPermissions , который позволяет указывать разрешения для файлов и папок.
Другой вариант заключается в использовании класса DirectorySecurity в пространстве имен System.Security.AccessControl и, в частности, SetAccessControl Метод этого класса.
Этот второй метод должен предоставить вам гораздо больше детализации и контроля над настройкой разрешений, поскольку пространство имен System.Security.AccessControl позволяет программно создавать или изменять списки дискреционного контроля доступа (DACL) и списки управления доступом системы. (SACL) для ряда защищенных ресурсов, таких как файлы, папки и т. Д.
Независимо от того, какой метод вы выбрали для установки разрешения, вам нужно помнить об учетной записи, под которой работает код, управляемый ASP.NET. Вы говорите, что используете Windows Server 2003, поэтому, вероятно, вы используете IIS версии 6.0 . По умолчанию IIS 6.0 запускает весь код пользователя под учетной записью « Сетевая служба », которая является учетной записью с низким уровнем привилегий и будет иметь ограниченные разрешения вне процессов IIS и иерархии веб-сайта. Вы можете прочитать статью MSDN, «Как: использовать учетную запись сетевой службы для доступа к ресурсам в ASP.NET» , касающуюся доступа к ресурсам на стороне сервера и того, какой именно доступ вы будете иметь под этой учетной записью.
В зависимости от точного характера того, что вы хотите сделать, вам также может понадобиться Олицетворение ASP.NET , чтобы ваш серверный код мог запускаться в контексте другой учетной записи. См. Статью MSDN « Как: использовать олицетворение и делегирование в ASP.NET 2.0 » для получения дополнительной информации об этом.