如何通过C ++检查我的程序是否在管理员权限下运行?

时间:2014-10-07 07:00:07

标签: c++ winapi batch-file admin elevated-privileges

如何检查我的C ++程序是否以管理员权限运行?

我是以这种方式为批次

做的
set fold=%random%

mkdir "C:\Windows\%fold%"

if errorlevel 1 (

goto Tag1

)

goto Tag2

但是我不能对C ++使用相同的东西,因为我不知道如何将变量1的%random%的值转移到%fold%的变量2,而且,我不知道是否存在错误级别C ++。

在这种情况下,有人可以帮助我,还是有办法检查我的程序是否以管理员权限运行?

2 个答案:

答案 0 :(得分:5)

您可以使用OpenProcessToken / GetTokenInformation对:https://stackoverflow.com/a/8196291/3235496

另一种选择是AccessCheck功能。

最后IsUserAnAdmin功能:它很简单但已弃用(可从Windows XP / Windows Server 2003获得)。

无论如何,你为什么检查?尝试可能是一个很好的策略:如果它有效,您就拥有足够的权限(可能是管理员权限的一个子集)。

PS

出于好奇......批处理文件的C ++翻译应该基于CreateDirectory函数。如果失败,请通过GetLastError检查扩展错误信息(返回代码ERROR_ACCESS_DENIED)。但是,正如David Heffernan所说,将文件夹喷射到系统目录中并不是一个好主意。

答案 1 :(得分:-1)

您可以在MSDN中找到答案:

https://support.microsoft.com/kb/118626

此外,您的应用程序应该有清单。