• C++ 程序获取管理员权限


    VC程序获取管理员权限:

    不提示uac,直接获取管理员权限:

    在VS-项目-项目属性–连接器–清单文件–UAC执行级别改为requireAdministrator

    提示uac,用户决定是否给给予管理员权限

    开局执行函数 ElevateNow():

    BOOL IsRunAsAdministrator()
    {
    BOOL fIsRunAsAdmin = FALSE;
    DWORD dwError = ERROR_SUCCESS;
    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))
    {
    dwError = GetLastError();
    goto Cleanup;
    }

    if (!CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin))
    {
    dwError = GetLastError();
    goto Cleanup;
    }

    Cleanup:

    if (pAdministratorsGroup)
    {
    FreeSid(pAdministratorsGroup);
    pAdministratorsGroup = NULL;
    }

    if (ERROR_SUCCESS != dwError)
    {
    throw dwError;
    }

    return fIsRunAsAdmin;
    }

    void ElevateNow()
    {
    BOOL bAlreadyRunningAsAdministrator = FALSE;
    try
    {
    bAlreadyRunningAsAdministrator = IsRunAsAdministrator();
    }
    catch (...)
    {

    }
    if (!bAlreadyRunningAsAdministrator)
    {
    WCHAR szPath[MAX_PATH];
    if (GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath)))
    {


    SHELLEXECUTEINFO sei = { sizeof(sei) };

    sei.lpVerb = L"runas";
    sei.lpFile = szPath;
    sei.hwnd = NULL;
    sei.nShow = SW_SHOWDEFAULT;

    if (!ShellExecuteEx(&sei))
    {
    DWORD dwError = GetLastError();
    if (dwError == ERROR_CANCELLED)
    //Annoys you to Elevate it LOL
    CreateThread(0, 0, (LPTHREAD_START_ROUTINE)ElevateNow, 0, 0, 0);
    }
    }

    }
    else
    {
    ///Code
    }
    }

  • 相关阅读:
    android studio首次运行出错
    分享4种CSS3效果(360度旋转、旋转放大、放大、移动)
    重温CSS:Border属性
    CSS3之过渡Transition
    ASP.NET(C#)--Repeater中生成“序号”列
    Android开发过程问题集锦(Continuous updating)
    ZOJ Problem Set Vol 1(Update paste)
    MapReduce基本原理及应用
    Tensorflow之基于MNIST手写识别的入门介绍[转载]
    Tensorflow 计算模型——计算图
  • 原文地址:https://www.cnblogs.com/wa502/p/16392355.html
Copyright © 2020-2023  润新知