以作为admin运行的进程以用户身份启动进程

FKo*_*rni 5 c# windows uac admin process

我想启动另一个以管理员身份运行的程序运行的程序.

问题是第二个程序需要使用outlook,如果程序以管理员身份运行,这是不可能的.主程序需要以管理员身份运行.

我确实已经提出了这两个解决方案:

Process.Start("cmd.exe", @"/C runas.exe /savecred /user:" + Environment.UserDomainName + "\\" + Environment.UserName + " " + "\"SomeProgram.exe" + "\"");
Run Code Online (Sandbox Code Playgroud)

要么

Process.Start("explorer.exe", "SomeProgram.exe");
Run Code Online (Sandbox Code Playgroud)

但我对这两种解决方案都有疑问.第一个询问用户密码(仅在Windows重新启动后第一次).第二个probalby将来不会工作,因为据我所知,它被认为是一个错误,并可能修复了未来的更新.

所以我想知道有没有其他解决方案,用户不需要输入密码?

这似乎对我有用:

Process.Start("cmd.exe", @"/C runas.exe /TrustLevel:0x20000  " + "\"SomeProgram.exe" + "\"");
Run Code Online (Sandbox Code Playgroud)

Mat*_*ili 1

Process类具有StartInfo作为ProcessStartInfo类的实例的属性。此类公开UserName,DomainPassword成员来指定要运行该进程的用户。

Process myProcess = new Process();
myProcess.StartInfo.FileName = fileName;
myProcess.StartInfo.UserName = userName;
myProcess.StartInfo.Domain = domain;
myProcess.StartInfo.Password = password;
myProcess.Start();
Run Code Online (Sandbox Code Playgroud)