【动态UAC权限】无盾程序(win32&cmd)

摘要:
Win32程序:首先,您需要这两个头文件。第二,我忘记了使用什么函数。简而言之,如果出现问题,请添加以下内容:#include #include<Shrobj h>检测是否以UAC开头://返回1作为管理员权限,0位普通BOOLIsUserAdmin{BOOLb;SID_IDENTIFIER_AUTHORITYNtAuthority=SECURITY_NT_AUTHORITY;PSIDAdministratorsGroup;AllocateAndInitializeSid;CheckTokenMembership;FreeSid;return;}对于主要部分,请注意返回值。程序应该在开头按如下方式编写:如果{//isUAC/Do nothing}其他{//notUACcharpath[100];GetModuleFileName;SHELLEXECUTEINFOExenfo;memset;execinfo.lpFile=路径;execinfo.cbSize=sizeof;execinfo.rpVerb=“run-as”;execinfo.fMask=SEE_MASK_NO_COCONSOLE;execinfo.nShow=SW_SHOWDEFAULT;//execinfo.lpCar参数=NULL;ShellExecuteEx;CloseHandle;exit;}这里的其他是UAC授权过程。通过ShellExecuteEx函数从UAC权限开始。启动后,当前程序退出。关于头文件:#include #include 让我多说几句。唉,我太好了。

【动态UAC权限】无盾程序(win32&cmd)第1张


可以看到两种不同的提权方式,注意是动态,用代码提权,而不是用清单文件提前处理。

函数都写好了,这里不多做解释。


win32程序:

首先需要这俩头文件,第二个我忘了啥函数要用了,总之出问题加上就对了:(补:获取程序路径的函数)

#include <windows.h>
#include <Shlobj.h>

检测是否以UAC启动:

//返回1为管理员权限,0位普通 
BOOL IsUserAdmin(void){
    BOOL b;
    SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
    PSID AdministratorsGroup; 
    AllocateAndInitializeSid(
        &NtAuthority,
        2,
        SECURITY_BUILTIN_DOMAIN_RID,
        DOMAIN_ALIAS_RID_ADMINS,
        0, 0, 0, 0, 0, 0,
        &AdministratorsGroup); 
    CheckTokenMembership(NULL,AdministratorsGroup,&b);
    FreeSid(AdministratorsGroup); 
    return(b);
}

主要部分,此处应注意返回值,程序中应在开头这样编写:

  if(IsUserAdmin()){
        //is UAC
        //什么都不做 
    }
    else{
        //not UAC
        char path[100];
        GetModuleFileName(NULL,path,100);
    
        SHELLEXECUTEINFO execinfo;  
        memset(&execinfo,0,sizeof(execinfo));  
        execinfo.lpFile         =path;  
        execinfo.cbSize         =sizeof(execinfo);  
        execinfo.lpVerb         ="runas";  
        execinfo.fMask          =SEE_MASK_NO_CONSOLE;  
        execinfo.nShow          =SW_SHOWDEFAULT;  
        //execinfo.lpParameters   =NULL;  
  
        ShellExecuteEx(&execinfo);
        CloseHandle(execinfo.hProcess);
        
        exit(0);
    }

此处的else内就是UAC提权的过程,通过 ShellExecuteEx 函数以UAC权限启动,启动完成后当前程序退出。

我懒得讲解,不明白的可以查微软文档。


控制台程序:

看到没我这么贴心,快来感谢我。

头文件不用多说:

#include <stdio.h>
#include <windows.h>

还是让我多说了,唉,我真是太好了

控制台的参数可以直接获得程序路径,就不用其它函数了,通常不这么做:

int main(int argc,char const *argv[])

好,下一步直接把这一坨往开头一方,完事:

if(IsUserAdmin()){
        //is UAC
        //什么都不做 
    }
    else{
        //not UAC
        char path[100];
        GetModuleFileName(NULL,path,100);
    
        SHELLEXECUTEINFO execinfo;  
        memset(&execinfo,0,sizeof(execinfo));  
        execinfo.lpFile         =path;  
        execinfo.cbSize         =sizeof(execinfo);  
        execinfo.lpVerb         ="runas";  
        execinfo.fMask          =SEE_MASK_NO_CONSOLE;  
        execinfo.nShow          =SW_SHOWDEFAULT;  
        //execinfo.lpParameters   =NULL;  
  
        ShellExecuteEx(&execinfo);
        CloseHandle(execinfo.hProcess);
        
        exit(0);
    }

事了拂衣去,深藏功与名~

【欢迎加入我的qq群:789209269

免责声明:文章转载自《【动态UAC权限】无盾程序(win32&amp;amp;cmd)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Dns局域网域名解析产品经理 数据分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

设置电脑中的某个程序不弹出UAC用户控制提示的方法

有用户发现在电脑开机后总是会弹出UAC用户账户控制窗口,这是因为电脑中的某个程序设置了开机启动,这样就会在开机后启动该程序时出现UAC提示。如果想要省略该提示,可以在电脑中设置该程序不弹出UAC用户控制提示,具体请看以下设置方法。 1、按Win+R打开运行,输入regedit,并回车打开注册表编辑器; 2、找到 HKEY_CURRENT_USERSSof...

Delphi与Windows 7下的用户账户控制(UAC)机制(加小盾牌),注册表没反应

WIN7, Vista提供的UAC机制,它的主要目的是防止对于操作系统本身的恶意修改。对于Delphi程序的影响,UAC主要在于以下几点:1、由于UAC机制,Delphi对于系统的操作可能无声的失败,而同样的程序,在2000/X下面可能运行正常。譬如注册表的改动。。。2、为了避免这样的情况,Delphi程序必须支持Vista UAC标注,也就是说,在UAC...

测试开发-PC客户端测试要点

  一级测试点 二级测试点 安装测试 首次安装(exe和msi格式的不同) 安装程序权限检查 软件安装包的描述和属性信息 静默安装和非静默安装测试 有UAC安装、无UAC安装 联网安装、断网安装 对必要软件环境的提示   多次覆盖安装,查看覆盖安装后已有数据是否有影响 检查软件组件覆盖更新、检查配置文件覆盖更新、检查安装日志...

windows Server 2008常见问题及解决方法

昨天下载了Windows Server2008,今天先在虚拟机上安装。使用起来的确感觉是速度快!比windows 2000升级到windows 2003变化大多了。应该是一次大的改革!当然使用中也遇见一些问题,有的自己解决,有的在网上找到的方法。在此帖出。 1。windows Server 2008 系统 IIS在哪里安装? 这是我使用遇见的第一个问题。我...

SIP 协议

SIP简介 sip出现于二十世纪九十年代中期,源于哥伦比亚大学计算机系副教授Henning Scheulzrinne 及其研究小组的研究。他处于人共同提出通过Internet传输实时数据的实时传输协议RTP之外,还与人合作编写了实时流传输协议RTSP标准提案,用于控制音频视频内容在Web上的流传输。SIP(Session Initiation Protoc...

[SC] OpenSCManager 失败 5:拒绝访问

问题:[SC] OpenSCManager 失败 5: 网查这个错误信息指拒绝访问 权限不足 1.解决: 以管理员身份运行cmd,即可 查询这个提示是指什么错误时,看网上有很多文章写用下面这种方法,很好奇的亲测了一下,也可以解决: 运行-->输入regedit-->依次找到HKEY_LOCAL_MACHINE\Software\Microso...