2013-04-12 36 views
9

我需要创建一个需要在“C:\ Program Files”,“Users [username]”和Sys32中创建文件/文件夹的应用程序。此外,应用程序需要做一些注册表项。如何在Visual Studio 2005中使用Manifest文件以管理员权限运行应用程序?

此应用程序需要在Vista和更高版本上工作。另外,在Windows Server 2003和更高版本上。

上述操作系统具有用户帐户控制(UAC)的概念,其中访问程序文件和写入注册表需要管理员权限。

我看了很多论坛,发现使用Microsoft SDK我们可以检查当前用户是否有管理员权限。但是对于Vista和更高版本的操作系统,“CheckTokenMembership”功能失败。

我还发现了一个解决方案,可以使用清单文件提前告诉操作系统当前的应用程序需要管理员权限。这是使用“requestedExecutionLevel”标签完成的。

我正在使用Visual Studio 2005创建应用程序。当我们在Visual Studio中创建应用程序时,会创建一个默认清单文件。我可以更改此清单文件以包含“requestedExecutionLevel”标签,以便我的应用程序始终以管理员权限运行?

有没有其他方法可以让我的应用程序以管理员权限运行,而无需让用户(管理员或标准)以“以管理员身份运行”运行我的应用程序?

谢谢!

+2

这可以帮助你http://stackoverflow.com/questions/8139480/c-console-application-prompt-run-as-admin-to-run-as-administrator与此http: //msdn.microsoft.com/en-us/library/bb756929.aspx –

+1

不确定你的问题是/是。但是你需要在UAC下将你的代币提升为管理员。如果您花时间阅读Microsoft SDK和示例代码,您将会有一个完美的例子来说明如何做到这一点。 – Dan

回答

22

您应该在项目属性链接器 - >清单文件 - > UAC执行级别中找到该选项。将其设置为requireAdminstrator

这将导致默认生成的清单包含您需要的requestedExecutionlevel,以便您的用户在未升级时会自动提升其权限。

screenshot of visual studio UAC options

相关问题