我有一个需要在管理权限下运行的进程。我需要一个普通的Joe来运行这个过程,但我不想让每个人都能访问…所以我创建了一个简单的类,它将以管理员身份使用模拟运行这一任务。
代码非常严格,但我不明白为什么会崩溃。帮助??!!
我通过一个批处理文件运行这个文件,我甚至将需要执行的文件复制到本地硬盘,认为这可能是通过网络运行应用程序的权限问题。
public static Process ImpersonateProcess(string exe, string args, string Username, string Password)
{
ProcessStartInfo psi = new ProcessStartInfo(exe);
psi.Arguments = args;
psi.UseShellExecute = false;
psi.UserName = Username;
psi.Password = new SecureString();
foreach (char c in Password.ToCharArray())
{
psi.Password.AppendChar(c);
}
Process proc = null;
Console.WriteLine("starting...");
proc = Process.Start(psi);
Console.WriteLine("started");
return proc;
}
在上面的代码中,我从来没有“开始”过。它在进程中引发错误。启动(psi)并显示错误消息“目录名无效”。