一. 程序为什么要以管理员方式允许
因为程序在允许过程中, 可能会涉及到一些需要管理员权限的操作, 比如在某个只允许管理员修改的目录中创建字目录, 修改注册表、以及有些需要管理员来运行的一些服务, 操作系统接口等。当一个程序的行为不正确的时候, 可以试试采用管理员方式运行, 结果会发现又正确了。
二. 那么如何以管理员方式运行呢
首先确认下, 当前程序是否是管理员运行, 是的话, 就不用管了;不是, 则提升权限。
三. 主要提升管理员权限代码如下
void AssistUtil::ElevateTo()
{
BOOL bAlreadyRunningAsAdministrator = FALSE;
try
{
bAlreadyRunningAsAdministrator = IsRunAsAdministrator();
}
catch (...)
{
_asm nop;
}
if (!bAlreadyRunningAsAdministrator)
{
TCHAR szPath[MAX_PATH];
if (GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath)))
{
SHELLEXECUTEINFO sei = { sizeof(sei) };
sei.lpVerb = _T("runas");
sei.lpFile = szPath;
sei.hwnd = NULL;
sei.nShow = SW_NORMAL;
if (!ShellExecuteEx(&sei))
{
DWORD dwError = GetLastError();
}
}
}
}