在当前用户下运行进程
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);
链接地址: http://www.djcxy.com/p/10489.html