Um ein Windows-Programm z.B. per Klick auf einen Button als Administrator auszuführen, kann folgender Code verwendet werden:
// Elevate the process if it is not run as administrator.
if (!fIsRunAsAdmin)
{
wchar_t szPath[MAX_PATH];
if (GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath)))
{
// Launch itself as administrator.
SHELLEXECUTEINFO sei = { sizeof(sei) };
sei.lpVerb = L"runas";
sei.lpFile = szPath;
sei.hwnd = hWnd;
sei.nShow = SW_NORMAL;
if (!ShellExecuteEx(&sei))
{
DWORD dwError = GetLastError();
if (dwError == ERROR_CANCELLED)
{
// The user refused the elevation.
// Do nothing ...
}
}
else
{
EndDialog(hWnd, TRUE); // Quit itself
}
}
}
Die Benutzung des Verbs “runas” ist in der aktuellen MSDN weder unter ShellExecuteEx noch unter SHELLEXECUTEINFO dokumentiert.
[Mehr]