我想从以管理员身份运行的程序启动另一个以用户身份运行的程序。
问题是第二个程序需要使用outlook,如果程序以管理员身份运行则不可能。主程序需要以管理员身份运行。
我确实已经想出了这两个解决方案:
Process.Start("cmd.exe", @"/C runas.exe /savecred /user:" + Environment.UserDomainName + "\\" + Environment.UserName + " " + "\"SomeProgram.exe" + "\"");
or
Process.Start("explorer.exe", "SomeProgram.exe");
但我对这两种解决方案都有问题。
第一个要求用户输入密码(仅在 Windows 重新启动后第一次)。
第二个可能将来不会起作用,因为据我发现它被认为是一个错误,并且可能会在未来的更新中修复。
所以我想知道有没有其他解决方案,用户不需要输入密码?
这似乎对我有用:
Process.Start("cmd.exe", @"/C runas.exe /TrustLevel:0x20000 " + "\"SomeProgram.exe" + "\"");
Process
班级有StartInfo
属性是一个实例ProcessStartInfo
班级。这个类暴露了UserName
, Domain
and Password
成员来指定要运行该进程的用户。
Process myProcess = new Process();
myProcess.StartInfo.FileName = fileName;
myProcess.StartInfo.UserName = userName;
myProcess.StartInfo.Domain = domain;
myProcess.StartInfo.Password = password;
myProcess.Start();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)