如何以管理员身份以编程方式启动进程,并记录非管理员用户

时间:2018-08-07 07:47:57

标签: c#

我正在尝试以非管理员用户身份启动具有管理员权限的进程。

如果我尝试此代码:

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();
}

过程启动错误。

0 个答案:

没有答案