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

Dra*_*121 0 c++ winapi admin batch-file elevated-privileges

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

我是以这种方式批量做的

set fold=%random%

mkdir "C:\Windows\%fold%"

if errorlevel 1 (

goto Tag1

)

goto Tag2
Run Code Online (Sandbox Code Playgroud)

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

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

man*_*lio 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所说,将文件夹喷射到系统目录中并不是一个好主意.