在当前用户下运行流程

时间:2012-02-29 15:08:55

标签: c# setup-project

有"安装项目"在VS.在安装过程中,我启动了另一个过程:

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

如果我在Windows 7下运行安装程序并为" Everyone"安装,则在SYSTEM下启动进程。如果我安装"只为了我",请在当前用户下启动流程。如何始终在当前用户下启动流程?

3 个答案:

答案 0 :(得分:5)

我发现非常简单solution。您只需要创建一个新类并从此链接复制文本。

启动流程调用ProcessAsUser.Launch("program name");

答案 1 :(得分:0)

我遇到了类似的问题:我的设置扩展程序(自定义操作)需要具有提升框的管理员权限。在我开始申请之后,#34; Just for Me"该进程具有为管理上下文设置的设置。例如,我的用户帐户喜欢在Windows资源管理器中查看文件的所有扩展名,但管理员帐户已配置为隐藏它们。因此,在每个文件打开框中,我都看不到扩展名。为了解决这个问题,这条代码起作用了:

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

仅适用于"仅适用于我"模式,在"每个人"使用管理员的设置。但这对我来说没问题。

答案 2 :(得分:-1)

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

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