在当前用户下运行进程

VS中有“安装项目”。 在安装过程中,我启动另一个过

System.Diagnostics.Process process = new System.Diagnostics.Process(); //fill StartInfo and run call Start() process.Start(); 

如果我在Windows 7下运行安装程序并安装“Everyone”,则在SYSTEM下启动进程。 如果我安装“Just for me”,请在当前用户下启动流程。 如何始终在当前用户下启动流程?

我找到了非常简单的解决方案 。 您只需要创建一个新类并从此链接复制文本即可。

要启动进程,请调用ProcessAsUser.Launch("program name");

我遇到了类似的问题:我的设置扩展程序(自定义操作)需要管理员权限,这会产生一个提升框。 在“Just for Me”结束时启动我的应用程序后,该过程具有为管理上下文设置的设置。 例如,我的用户帐户喜欢在Windows资源管理器中查看文件的所有扩展名,但管理员帐户已配置为隐藏它们。 所以在每个文件打开框中我都看不到扩展名。 为了解决这个问题,这条代码起了作用:

 ProcessStartInfo startInfo = new ProcessStartInfo(ShortcutTarget); startInfo.LoadUserProfile = true; startInfo.UseShellExecute = false; Process.Start(startInfo); 

它仅适用于“Just for Me”模式,在“Everyone”中使用管理员的设置。 但这对我来说没问题。

使用ProcessStartInfo类及其属性UserName ,然后将其用作Process.Start静态方法的参数。

 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; Process.Start(startInfo);