从以admin身份运行的进程中以用户身份启动进程

我想从一个以pipe理员身份运行的程序启动另一个以用户身份运行的程序。

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

我已经想出了这两个解决scheme:

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

要么

 Process.Start("explorer.exe", "SomeProgram.exe"); 

但是我对这两个解决scheme都有问题。 第一个要求用户input密码(仅在Windows重新启动后第一次)。 第二个probalby未来不会工作,因为据我所知,它被认为是一个bug,并可能在未来更新。

所以我想知道有没有其他解决scheme,用户不需要input密码?

这似乎为我工作:

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

Solutions Collecting From Web of "从以admin身份运行的进程中以用户身份启动进程"

Process类具有作为ProcessStartInfo类的实例的StartInfo属性。 这个类公开了UserNameDomainPassword成员来指定你想运行该进程的用户。

 Process myProcess = new Process(); myProcess.StartInfo.FileName = fileName; myProcess.StartInfo.UserName = userName; myProcess.StartInfo.Domain = domain; myProcess.StartInfo.Password = password; myProcess.Start();