我希望能够从以管理员身份运行的程序开始另一个以用户身份运行的程序。
问题在于第二个程序需要使用Outlook,如果程序以管理员身份运行,则不可能。主要程序需要以管理员身份运行。
我已经想出了以下两个解决方案:
但是我对这两种解决方案都有问题。 第一种要求用户输入密码(只有在Windows重启后的第一次)。 第二种可能在未来不起作用,因为据我所知,它被视为一个错误,可能会在未来的更新中修复。 所以,我想知道是否还有其他解决方案,用户不需要输入密码? 这对我似乎有效:
问题在于第二个程序需要使用Outlook,如果程序以管理员身份运行,则不可能。主要程序需要以管理员身份运行。
我已经想出了以下两个解决方案:
Process.Start("cmd.exe", @"/C runas.exe /savecred /user:" + Environment.UserDomainName + "\\" + Environment.UserName + " " + "\"SomeProgram.exe" + "\"");
或者
Process.Start("explorer.exe", "SomeProgram.exe");
但是我对这两种解决方案都有问题。 第一种要求用户输入密码(只有在Windows重启后的第一次)。 第二种可能在未来不起作用,因为据我所知,它被视为一个错误,可能会在未来的更新中修复。 所以,我想知道是否还有其他解决方案,用户不需要输入密码? 这对我似乎有效:
Process.Start("cmd.exe", @"/C runas.exe /TrustLevel:0x20000 " + "\"SomeProgram.exe" + "\"");
runas /trustlevel
这个东西会让进程处于奇怪的状态,最好还是避免使用。请参考 https://dev59.com/OYzda4cB1Zd3GeqPjTbA。 - Harry Johnston