2010-11-11 2 views
0

Я пытаюсь обойти unauthorizedaccessexception, вызванное попыткой создать папку на внешней машине, которая находится в той же сети, я пробовал работать с этим, добавив accessrule , что не помогает, я все равно получаю ту же ошибку.Аутентификация пользователя для создания каталога в C#

String thepath = @"\\WONEATEMPMACHINE\C\ExampleData\" 
DirectoryInfo dInfo = new DirectoryInfo(thepath); 
DirectorySecurity dSecurity = dInfo.GetAccessControl(); 

dSecurity.AddAccessRule(new FileSystemAccessRule("DOMAINEXAMPLE\\wonea", 
         FileSystemRights.Write, 
         InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
         PropagationFlags.None, 
         AccessControlType.Allow)); 

         dInfo.SetAccessControl(dSecurity); 

Directory.CreateDirectory(thepath + "\\newfolder"); 

ответ

0

Беглый бы предположить, что учетная запись, что приложение работает под нужды иметь разрешение на запись, чтобы сделать такие изменения в каталог в первую очередь.

Если учетная запись (зашифрованная или специальная учетная запись приложения) не имеет разрешения на создание в указанном пути, она, вероятно, также не имеет права изменять правила доступа на этом пути.

Возможно, есть несколько способов исправить это, но основная цель заключается в том, что учетная запись, на которой выполняется приложение, нуждается в разрешении на запись в родительском каталоге во время создания подкаталога.

Если ваше приложение является олицетворением пользователей, одним из решений является размещение этих пользователей в группе, у которой уже есть разрешение. В качестве альтернативы и, возможно, более безопасный подход состоит в том, что приложение может переключиться на одну учетную запись приложения, которая уже имеет разрешение на создание каталогов, назначить доступ к новому каталогу только зарегистрированному пользователю, а затем переключиться обратно на зарегистрированного пользователя Счет. Еще один вариант, возможно, самый безопасный, - это просто создать каталоги раньше времени, но я предполагаю, что все они не будут известны заранее.

Если приложение не олицетворяет пользователей, дайте доступ учетной записи приложения до запуска приложения.

+0

Спасибо за понимание, я еще раз посмотрел, где приложение должно быть развернуто, и понял, что это предназначено для внутреннего использования. Поэтому я открыл папку для записи, разрешенную для группы пользователей, используемой в сети, вместо того, чтобы делать это сверх гибким способом через программное обеспечение. – wonea

Смежные вопросы