#include <windows.h>
#include <shellapi.h>
#include <iostream>
bool 是否以管理员权限运行() {
BOOL fIsRunAsAdmin = FALSE;
PSID pAdministratorsGroup = NULL;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
if (!AllocateAndInitializeSid(
&NtAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&pAdministratorsGroup)) {
return false;
}
if (!CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin)) {
fIsRunAsAdmin = FALSE;
}
FreeSid(pAdministratorsGroup);
return fIsRunAsAdmin;
}
int main() {
if (是否以管理员权限运行()) {
std::cout << "该进程以管理员权限运行。" << std::endl;
} else {
std::cout << "该进程没有以管理员权限运行。" << std::endl;
ShellExecute(NULL, "runas", "path_to_your_executable", NULL, NULL, SW_SHOWNORMAL);
}
return 0;
}