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

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


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&cmd)的更多相关文章

  1. 如何让Qt程序在运行时获取UAC权限

    在pro文件中加入以下语句: QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\' ...

  2. C# 控制台使用 UAC 权限

    原文:C# 控制台使用 UAC 权限 本文告诉大家如何在 C# 控制台项目使用 UAC 权限.这个方法在 WPF 和 控制台都是可以使用. 右击项目,点击添加文件,找到程序清单 在 WPF 使用 UA ...

  3. Android 动态申请权限问题【转】

    Android 动态申请权限问题 感谢大佬:https://www.jianshu.com/p/2324a2bdb3d4 感谢大佬:https://blog.csdn.net/weixin_42910 ...

  4. .NET中提升UAC权限的方法总结

    [题外话] 从Vista开始,由于增加了UAC(用户账户控制,User Account Control)功能,使得管理员用户平时不再拥有能控制所有功能的管理员权限了,所以在调用很多比较重要的功能时需要 ...

  5. UAC权限

    .NET中提升UAC权限的方法总结   [题外话] 从Vista开始,由于增加了UAC(用户账户控制,User Account Control)功能,使得管理员用户平时不再拥有能控制所有功能的管理员权 ...

  6. 说说Android6.0动态申请权限的那些坑

    白天在做SDK23版本的适配,遇到了不少坑,现在抽空记下来,以此为戒. 首先要知道哪些坑,就得先了解一些定义和基本使用方式. 那么先介绍一下动态申请的权限分组情况. 下面的权限组是由谷歌官方定义的,目 ...

  7. android 6.0之后动态获取权限

    Android 6.0 动态权限申请   1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限 ...

  8. Spring Security 动态url权限控制(三)

    一.前言 本篇文章将讲述Spring Security 动态分配url权限,未登录权限控制,登录过后根据登录用户角色授予访问url权限 基本环境 spring-boot 2.1.8 mybatis-p ...

  9. 管理员权限运行-C#程序

    C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也 ...

随机推荐

  1. can总线第一讲

    一  官方简介如下: 控制器局域网CAN(Controller Area Network),是由德国Bosch公司为汽车应用而开发的多主机局部网络,应用于汽车的监测和控制.德国Bosch公司开发CAN ...

  2. 阿里云、腾讯云、CentOS下的MySQL的安装与配置详解

    一. 安装 查看是否已安装 # 查看MySQL版本 mysql --version # 查看MySQL相关文件 whereis mysql 若已安装,卸载方法如下 # 卸载MySQL yum remo ...

  3. java中StringTokenizer的用法

    4.StringTokenizer StringTokenizer可以解析分隔符不是空格的情况.例子:import java.util.StringTokenizer;public class Tes ...

  4. 在Wireshrak中使用过滤器——捕获过滤器

    过滤器可以让你找出你所希望进行分析的数据包.简单来说,一个过滤器就是定义了一定条件,用来包含或者排除数据包的表达式.如果你不希望看到一些数据包,你可以写一恶搞过滤器来屏蔽它们.如果你希望只看到某些数据 ...

  5. 修改django配置文件settings

    默认带数据库sqlite DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join ...

  6. Spring-Mybatis使用到的依赖及配置

    日志(log4j) log4j.rootLogger=DEBUG,console,file log4j.appender.console = org.apache.log4j.ConsoleAppen ...

  7. php第一次实验个人博客网站的设计编写①

    先上效果图: 网页代码:index.html <!DOCTYPE html> <html lang="en"> <head>     <m ...

  8. 玩转LiteOS组件:玩转Librws

    摘要:Librws是一个跨平台的websocket客户端,使用C语言编写. 本文分享自华为云社区<LiteOS组件尝鲜-玩转Librws>,作者: W922 . 本期小编为大家带来Lite ...

  9. arduino 天下第一(暴论) -- 智能猫眼与 SDDC 连接器移植到 arduino 上

    前言 之前看了官方玩过一个智能猫眼摄像头,我很有兴趣,但是那个 IDF 平台属实难整,我光安装都整了一天,网不好下载的包可能有问题.然后命令行操作也比较麻烦,我就想到了无敌的 arduino ,ESP ...

  10. Apache Doris ODBC Mysql外表在Ubuntu下使用方法及配置

    Apache Doris 社区 2022 年的总体规划,包括待开展或已开展.以及已完成但需要持续优化的功能.文档.社区建设等多方面,我们期待有更多的小伙伴参与进来讨论.同时也希望多多关注Doris,给 ...