C # - Запуск нового процесса в качестве пользователя с пустым паролем - PullRequest
0 голосов
/ 31 августа 2010

У меня есть дочерний процесс, который я порождаю из своего основного приложения, который должен запускаться от имени другого локального пользователя на компьютере с Windows 7. Я бы предпочел не устанавливать пароль для этой учетной записи пользователя, но кажется, что создание нового процесса с олицетворением не допускает пустых паролей или любых типов нулевых значений. Кто-нибудь знает, возможно ли это?

ниже была моя попытка передать пустой символ:

ProcessStartInfo info = new ProcessStartInfo(@"C:\PathToExecutable");
System.Security.SecureString psswd = new System.Security.SecureString();
psswd.AppendChar('\0');
psswd.MakeReadOnly();

info.UseShellExecute = false;
info.UserName = "NewProcessName";
info.Password = psswd;
info.Domain = "LocalMachine";

Process newProc = new Process();
newProc.StartInfo = info;

newProc.Start();

редактировать: Сообщение об ошибке я получаю

Logon failure: user account restriction. Possible reasons are blank passwords not allowed, logon hour restrictions, or a policy restriction has been enforced

Ответы [ 3 ]

1 голос
/ 31 августа 2010

Что вы используете для подражания?LogonUser() должен позволять пустой пароль.

Я не думаю, что вызов psswd.AppendChar('\0') - это правильный способ указать пустой пароль.Попробуйте удалить SecureString из своего кода, чтобы посмотреть, сможете ли вы хотя бы заставить олицетворение работать.Затем добавьте SecureString обратно, чтобы проверить, не находится ли здесь ваша проблема.

* Редактировать *

Попробуйте это:

unsafe {
    char* ary = stackalloc char[0];
    SecureString str = new SecureString(ary, 0);
}

set info.Password к вашей новой SecureString ... не уверен, придется ли вам это делать в контексте unsafe или нет.

0 голосов
/ 16 октября 2012

По-видимому, это известная проблема, которая LogonUser() завершается ошибкой с пустым паролем. Я установил общий пароль для необходимых учетных записей в моем случае использования.

0 голосов
/ 31 августа 2010

Поскольку указывает на этот вопрос, установите LoadUserProfile в true в StartInfo. Попробуйте, это может помочь.

...