我正在尝试以非管理员用户身份启动具有管理员权限的进程。
如果我尝试此代码:
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.FileName = @"C:\Program Files (x86)\Notepad++\notepad++.exe";
processInfo.Verb = "runas";
processInfo.UserName = "admin";
string pass = "adminPAss";
SecureString pwdSecure = new SecureString();
foreach (char item in pass)
{
pwdSecure.AppendChar(item);
}
processInfo.Password = pwdSecure;
processInfo.Domain = "MyDomain";
processInfo.WindowStyle = ProcessWindowStyle.Normal;
processInfo.UseShellExecute = false;
Console.WriteLine();
Process process = new Process();
process = Process.Start(processInfo);
管理员用户启动notepad ++。exe,但没有管理员权限。
如果我冒充管理员用户,然后尝试启动该过程:
using (WindowsImpersonationContext impersonatedUser = WindowsIdentity.Impersonate(safeTokenHandle.DangerousGetHandle()))
{
// Check the identity.
Console.WriteLine("After impersonation: "
+ WindowsIdentity.GetCurrent().Name);
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.FileName = @"C:\Program Files (x86)\Notepad++\notepad++.exe";
processInfo.Verb = "runas";
processInfo.Domain = "MyDomain";
processInfo.WindowStyle = ProcessWindowStyle.Normal;
processInfo.UseShellExecute = true;
processInfo.LoadUserProfile = true;
//processInfo.RedirectStandardOutput = true;
//processInfo.RedirectStandardError = true;
Console.WriteLine();
Process process = new Process();
process = Process.Start(processInfo);
process.WaitForExit();
}
过程启动错误。