Начать процесс с администратором вправо в C #
-
29-09-2019 - |
Вопрос
Я должен запустить программу командной строки с System.diagnostics.process.start () и запустить ее в качестве администратора.
Это действие также будет запускаться запланированной задачей каждый день.
Решение 5
Я нашел его, мне нужно установить запланированную задачу для запуска приложения с самыми высокими привилегиями в общем настройках.
Другие советы
Я просто пытаюсь использовать:
Process p = new Process();
p.StartInfo.Verb = "runas";
Это работает нормально, если я запускаю свою программу в качестве администратора, но когда запланированная задача запускает его, не принимает во внимание «Руна», я думаю.
Лучшим безопасным вариантом для запуска процесса с входом в систему и паролем является использование класса Securestring для шифрования пароля. Здесь образец кода:
string pass = "yourpass";
string name ="login";
SecureString str;
ProcessStartInfo startInfo = new ProcessStartInfo();
char[] chArray = pass.ToCharArray();
fixed (char* chRef = chArray)
{
str = new SecureString(chRef, chArray.Length);
}
startInfo.Password = str;
startInfo.UserName = name;
Process.Start(startInfo);
Вы должны разрешить небезопасному коду в свойствах вашего проекта.
Надеюсь, это помощь.
Если вы используете запланированные задачи, вы можете установить пользователя и пароль для выполнения задачи.
Используйте учетные данные администратора на задаче, и все будет в порядке.
С Process.Start
, вам нужно предоставить UserName
и Password
для ProcessStartInfo
:
Process p = new Process("pathto.exe");
p.StartInfo.UserName = "Administrator";
p.StartInfo.Password = "password";
p.Start();
Имейте в виду, что хранение пароля в прозрачном тексте в программе никогда не бывает безопасным, если кто -то может просматривать приложение и посмотреть, что в нем. Использование Securestring для преобразования хранимого пароля в пароль с защитой не делает его более безопасным, поскольку прозрачный текстовый пароль все еще будет присутствовать.
Лучший способ использовать SecureString - пройти один символ для преобразования в какое-то время, который не требует полного незашифрованного пароля в любом месте памяти или на жестком диске. После того, как этот персонаж преобразуется, программа должна забыть ее, а затем перейти к следующему.
Это может быть сделано, я думаю только только путем передачи персонажей для перевода, поскольку они набираются в консоли пользователем.