zoukankan      html  css  js  c++  java
  • 判断当前进程是否以管理员权限运行(AllocateAndInitializeSid后,用CheckTokenMembership与AdministratorsGroup进行比较,和Delphi的那个例子还有点不一样)

    在Win7下(Vista以上的...)有时某些操作就是会让人郁闷

    开启了UAC的话,得以管理员权限运行才不会出现Access is denied。。。

    但是,程序又不是非得什么时候都用那破管理员权限的

    总不能在manifest里加权限,然后用户运行时老弹确认吧?

    当然啦,可以将需要管理员权限的部分写到另一个小程序,需要时调用它就行了

    不过还是不爽,如果是一个小小的程序还要再加另一个小小小程序的话

    那好,干脆判断是不是Win7。。。开启了UAC没有之类

    开启的话再判断下是不是以管理员权限运行,不是则提示下用户下面的操作需管理员权限

    。。。。

    貌似这样还勉强可以

    上代码吧,啰嗦了那么多

    bool  IsProcessRunAsAdmin()
    {
        SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
        PSID AdministratorsGroup;

        BOOL  b = AllocateAndInitializeSid(
            &NtAuthority,
            2,
            SECURITY_BUILTIN_DOMAIN_RID,
            DOMAIN_ALIAS_RID_ADMINS,
            0, 0, 0, 0, 0, 0,
            &AdministratorsGroup);

        if (b)
        {
            CheckTokenMembership(NULL, AdministratorsGroup, &b);
            FreeSid(AdministratorsGroup);
        }

        return  b == TRUE ;
     }

    几乎完全是COPY MSDN上的例子了,

    在Win7下测试没问题

    剩下的不解释

    http://blog.csdn.net/just_fancy/article/details/6310347

  • 相关阅读:
    day16(链表中倒数第k个结点)
    day15(C++格式化输出数字)
    day14(调整数组顺序使奇数位于偶数前面 )
    day13(数值的整数次)
    day12(二进制中1的个数)
    day11(矩形覆盖)
    day10(跳台阶)
    hadoop 又一次环境搭建
    Hive 学习
    hadoop -工具合集
  • 原文地址:https://www.cnblogs.com/findumars/p/6329499.html
Copyright © 2011-2022 走看看