2012-10-01 2 views
2

Как я могу реализовать runas/noprofile/netonly/user: @ с использованием C#.Реализация runas в C#

System.Diagnostics.ProcessStartInfo имеет поля, такие как пользователь, домен, пароль, глагол (где мы можем использовать runas), но как установить netonly. С помощью Cmd ему не нужен токен, но при использовании диагностики запрашивается токен из-за какой ошибки безопасности «{« В базе данных безопасности на сервере нет учетной записи компьютера для этого отношения доверия рабочей станции »}« происходит, поскольку моя система не является доверенным партнером в этом домене. В Cmd такой проблемы не возникает. Я хочу использовать пользовательский интерфейс для ввода информации о пользователе. Поскольку моя система не является надежным партнером, я не могу использовать олицетворение.

+0

Несколько лет назад я написал [маленький класс олицетворения] (http://www.codeproject.com/Articles/10090/A-small-C-Class-for-impersonating-a-User), которые могут быть полезны для вашего требования. –

+0

Для использования олицетворения ПК должен быть доверенным партнером домена, а мой не является надежной системой, поэтому я не могу использовать олицетворение. Такое же исключение выбрасывается при использовании олицетворения. – user1675935

ответ

2

Вы пытались выполнить новый процесс с помощью глагола runas с помощью ProcessStartInfo. Но это не то же самое, что выполнение процесса runas из командной строки.

Таким образом, простой способ повторить то, что вы делаете в командной строке, - это запустить программу runas, передающую все параметры, как и в командной строке.

Process.Start("runas.exe", "/noprofile /netonly ......"); 

Я не понимаю нюансов того, что вы пытаетесь. Однако, если работает через ЦМД делает именно то, что вам нужно, то вы можете сделать только что:

Process.Start("cmd.exe", "/c runas /noprofile /netonly ......"); 
+0

Process.Start («runas.exe», «/ noprofile/netonly/user:» + Application.StartupPath + имя файла); Всплывающее окно Cmd приходит и идет без ввода (Пароль). – user1675935

+1

Возможно, вам понадобится обернуть путь в кавычки, если он содержит пробелы. –

+1

. Вы также можете попробовать перегрузить ProcessStartInfo и установить UseShellExecute в false. Хотя я не вижу, как это изменит ситуацию. –

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