Войдите с правами администратора в некоторый домен и скопируйте файлы клиентских машин с C # - PullRequest
1 голос
/ 05 февраля 2009

У меня есть проект, который может копировать файлы на рабочие столы другого клиента в моем домене. Существует более 300 клиентских компьютеров. Но есть проблема. Когда я запускаю этот проект в учетной записи пользователя без прав администратора в моем домене. Не могу копировать файлы, получая сообщение об ошибке «Отказано в доступе», ограничения пользователя. Я хочу сделать эту программу, как эта, в учетной записи пользователя без прав администратора, когда пользователь начинает копировать файлы; Сначала моя программа получит доступ администратора через логин в моем аккаунте администратора домена, а затем скопирует файлы. Чем выйти из системы. Как я могу это сделать? Я хочу сделать это с C #.

Ответы [ 3 ]

4 голосов
/ 05 февраля 2009

У меня была похожая проблема: на производстве требовалось запустить одну из моих программ, которая обрабатывает файлы в сети, к которой у них нет доступа.

В итоге я использовал Impersonation, что позволило мне запустить поток обработки файлов с набором учетных данных, установленных во время выполнения моей программой.

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

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

В любом случае, посмотрите на Олицетворение Я нашел эти ресурсы полезными:

Безопасное олицетворение другого пользователя

Brian Low's ImpersonationHelper class

-Jay

3 голосов
/ 05 февраля 2009

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

Чтобы запустить программу на C # от имени другого пользователя, сделайте это,

// Create a secure version of the password
SecureString pass = new SecureString();
foreach ( char c in _pass.Text )
{
   pass.AppendChar( c );
}

Process process = Process.Start( "PrivilegedProgram.exe", _arguments, _user.Text, pass, _domain.Text );
0 голосов
/ 05 февраля 2009

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

...