Process.Start () не нерестищий новый процесс под тем же пользователем
-
30-09-2019 - |
Вопрос
Я всегда находился под впечатлением, что когда вы используете процесс как (domain\user) mydomain\myuser
, когда используешь Process.Start()
Это начнет этот новый процесс, используя те же учетные данные - mydomain\myuser
.
Проблема у меня есть что моя Process.Start()
Похоже, вызов, похоже, создает процесс в соответствии с системной учетной записью, которая вызывает мне проблемы разрешений в процессе начального (который должен работать под учетной записью администратора из-за работы, которую она делает). Если это меняет вещи - я неренирую этот процесс (на заказ построенный EXE) от в установщике Windows.
Какие-либо предложения? Я прочитал о политиках Windows Group (возможно) влиять на это, но если я честно, это потеряно на меня.
Редактировать: маленький фрагмент:
Где exename
а также commandLine
Параметры для этого метода тела:
ProcessStartInfo procInfo = new ProcessStartInfo(exeName, commandLine);
procInfo.WorkingDirectory = workingDirectory;
procInfo.UseShellExecute = false;
procInfo.CreateNoWindow = true;
Process process = Process.Start(procInfo);
Process.WaitForExit();
return process.ExitCode;
Решение
Либо установите procinfo.useSheLlexecute на true, либо выполняйте cmd в качестве процесса с вашим exe в качестве параметра в команду cmd. Когда USESHELLEXECUTE установлено значение false, вот много интересных побочных эффектов: USESHELLEXECUTE
Другие советы
Ваше впечатление верно. Process.Start () всегда будет начать новый процесс в соответствии с текущими учетными данными пользователя - если вы не предоставляете альтернативные учетные данные в ProcessStartInfo
или используйте одну из перегрузок, которые принимают учетные данные.
Должна быть еще одна проблема - поделись фрагментом вашего кода.
ОБНОВИТЬ
OK! Вы ничего не упомянули о установщике. Все установщики MSI будут работать в системе, поскольку они будут запускаться «Установщик Windows«Что вы можете проверить, и они бегут под СИСТЕМА.