以编程方式检查用户是否具有足够的软件安装权限

时间:2013-06-21 11:41:37

标签: c# .net .net-security

在我的应用程序中(它仅支持Windows 7及更高版本),我想运行一个脚本,它将运行一些安装程序。在执行此操作之前,我需要检查从我的应用程序运行此脚本是否会为其提供足够的权限,以便它可以运行安装。否则,Windows拒绝执行此操作并显示一条消息,其中包含启动我的应用程序的用户需要管理员权限的说明。

根据这个question,解决我的问题的简单方法并不总是正常,但我也不喜欢其他建议(使用Win API)。

有人能解释我如何使用简单且记录良好的.NET代码来解决我的问题,而不是Win API吗?

2 个答案:

答案 0 :(得分:0)

我知道这与你的“但不是Win API?”不匹配,但实际上,使用P / Invoke和Win32 API是可行的方法。

由于进程提升仅与Windows相关(因此,如果您希望将代码用于Mono,则没有意义),依赖Win32 API即可。

GetTokenInformation是一个很好用的功能,只需确保将IntPtr用于特定于平台的大小(甚至更好:SafeHandle用于进程处理)所以它会正常工作在两台x86 / x64机器上。

答案 1 :(得分:0)

您可以先尝试询问管理员权限:
here,这将在运行程序时询问用户管理员权限。注意:您可能希望以管理员身份重新启动IDE,以防每次都要求您以管理员身份启动调试