2016-07-05 158 views
-1

我开发了一个c#windows窗体应用程序。这个应用需要管理员权限。现在我想启动一个没有管理员权限的进程,因为在这个过程中,我得到了一些特殊的文件夹路径,例如文档,临时文件,appdata等。目前它给了我该文件夹的管理员用户路径,因为进程是以管理员权限开始的。如何在没有管理员权限的情况下启动进程

如何在没有管理员权限的情况下启动进程即使应用程序以管理员权限运行?

+1

这是管理员权限和以管理员身份运行之间的巨大差异..如果你以管理员身份运行,那么你的用户,如果你使用管理员权限运行,那么你仍然是你 – BugFinder

+0

看看'ProcessStartInfo' 。你可以传递你希望它运行的用户的用户名和密码。 https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo(v=vs.110).aspx –

+0

[如何从我的升级过程启动未升级的过程,反之亦然](https: //blogs.msdn.microsoft.com/oldnewthing/20131118-00/?p=2643)。当然,它是从Win32方面来处理它的,所以你可能需要跳过一些箍环来编写管理的等价物。 –

回答

0

看一下属性文件夹中的app.manifest文件。删除以下行:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

添加以下行,而不是这样的:

<requestedExecutionLevel level="asInvoker" uiAccess="false" /> 

可能是这个答案有帮助。

http://weblogs.asp.net/kennykerr/Windows-Vista-for-Developers-1320-Part-4-1320-User-Account-Control

同时检查此解决办法。

Windows注册表编辑器5.00版

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker] 
@="Run without admin rights (UAC)" 

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command] 
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\"" 

简单 - 添加上下文菜单上的应用程序。文件选择运行没有管理权限。在某些情况下 - 少量0.1%的程序可能会问UAC提示两次。

保存在name_of_file.reg并将其添加到Windows注册表中。

相关问题