精华内容
下载资源
问答
  • dll功能:让应用程序以管理员权限运行,不受当前计算机用户影响(不管你是普通用户还是管理员),接口简单易懂,亲测c++和c#,unity平台都完美运行。去掉尾部后缀即可食用,另附上说明文档。
  • 准备工作 1、Visual Studio 编辑器 2、一个高于Windows Vista的电脑(要求管理员权限的软件会显示一个小盾牌) 3、要更改权限的程序文件

    最近在写一个系统OEM信息修改器,但实现这个功能就需要管理员权限,不可能打开一个文本框提示用户需要右键管理员权限运行吧,于是写下了这个经验

    准备工作

    1、Visual Studio 编辑器
    2、一个高于Windows Vista的电脑(要求管理员权限的软件会显示一个小盾牌)
    3、要更改权限的程序文件

    这里是以Windows 8.1,Visual Studio 2017 Enterprise为例
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    正式开始

    1、打开Visual Studio ,创建一个C#程序。
    在这里插入图片描述
    在这里插入图片描述

    2、右键项目文件,点击“属性”(或者按下Alt+Enter)
    在这里插入图片描述
    3、点击“安全性”,先将“□启用ClickOnce”选项打开,再把它关上
    在这里插入图片描述
    4、接下来到右侧“解决方案资源管理器”,双击“Properties”里面的“app.manifest”文件
    在这里插入图片描述
    这是该文件里的代码(可能其他电脑是不一样的)

    <?xml version="1.0" encoding="utf-8"?>
    <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <!-- UAC 清单选项
                 如果想要更改 Windows 用户帐户控制级别,请使用
                 以下节点之一替换 requestedExecutionLevel 节点。n
            <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
            <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
            <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    
                指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
                如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
                元素。
            -->
            <requestedExecutionLevel level="asInvoker" uiAccess="false" />
          </requestedPrivileges>
          <applicationRequestMinimum>
            <defaultAssemblyRequest permissionSetReference="Custom" />
            <PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
          </applicationRequestMinimum>
        </security>
      </trustInfo>
      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
          <!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
               Windows 版本的列表。取消评论适当的元素,Windows 将
               自动选择最兼容的环境。 -->
          <!-- Windows Vista -->
          <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
          <!-- Windows 7 -->
          <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
          <!-- Windows 8 -->
          <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
          <!-- Windows 8.1 -->
          <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
          <!-- Windows 10 -->
          <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
        </application>
      </compatibility>
      <!-- 指示该应用程序可以感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
           自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
           选择加入。选择加入此设置的 Windows 窗体应用程序(目标设定为 .NET Framework 4.6 )还应
           在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。-->
      <!--
      <application xmlns="urn:schemas-microsoft-com:asm.v3">
        <windowsSettings>
          <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
        </windowsSettings>
      </application>
      -->
      <!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
      <!--
      <dependency>
        <dependentAssembly>
          <assemblyIdentity
              type="win32"
              name="Microsoft.Windows.Common-Controls"
              version="6.0.0.0"
              processorArchitecture="*"
              publicKeyToken="6595b64144ccf1df"
              language="*"
            />
        </dependentAssembly>
      </dependency>
      -->
    </assembly>
    

    5、最重要的一步,将文件里

    <requestedExecutionLevel level="asInvoker" uiAccess="false" />
    

    改为

    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
    

    (注释上是有标明的,默认注释是这样写的)

    <!-- UAC 清单选项
                 如果想要更改 Windows 用户帐户控制级别,请使用
                 以下节点之一替换 requestedExecutionLevel 节点。n
            <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
            <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
            <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    
                指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
                如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
                元素。
            -->
    

    5、现在按下F5,编译程序,会提示一下情况
    在这里插入图片描述
    提示需要管理员权限了,现在定位到软件的程序生成目录,查看一下结果
    在这里插入图片描述
    会发现程序出现了一个小盾牌,双击程序会出现一个UAC的对话框(前提是电脑有设置UAC)
    在这里插入图片描述

    提示

    如果将修改后的代码

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
    

    改回一开始的代码

    <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
    

    将会打回原形哦

    展开全文
  • 为程序申请管理员权限

    千次阅读 2016-01-22 09:51:25
    windows 为程序申请管理员权限方法一:ShellExecuteEx, 头文件windows.h 依赖库Shell32.dll此方法在程序中,为调用的外部程序申请管理员权限 QByteArray appNameByte = appName.toUtf8(); QByteArray dirByte = ...

    windows 为程序申请管理员权限

    方法一:ShellExecuteEx, 头文件windows.h 依赖库Shell32.dll


    此方法在程序中,为调用的外部程序申请管理员权限

        QByteArray appNameByte = appName.toUtf8();
        QByteArray dirByte = QDir::toNativeSeparators(appPath).toUtf8();
        SHELLEXECUTEINFO sei={sizeof(SHELLEXECUTEINFO)};
        sei.fMask  = SEE_MASK_NOCLOSEPROCESS;
        sei.lpVerb = TEXT("runas");
        sei.lpFile = appNameByte.data();
        sei.lpDirectory = dirByte.data();
        sei.nShow = SW_SHOW;
        if(!ShellExecuteEx(&sei))
        {
            DWORD dwStatus=GetLastError();
            if(dwStatus==ERROR_CANCELLED)
            {
                printf("refused\n");
            }
            else if(dwStatus==ERROR_FILE_NOT_FOUND)
            {
                printf("not found file\n");
            }
        }
    

    示例:

    QString appfile = "C:\\test.exe";
    QString args = "arg1 arg2 arg3";
    //"runas" 以管理员权限启动程序,hProcess小于32表示程序启动失败
    HANDLE hProcess = ShellExecute( 0, L"runas", startCopyApp.utf16(), args.utf16(), NULL, SW_SHOWNORMAL );
    

    方法二:在vs”Project”->”Property”->”Linker”->”Manifest File”->”UAC Execution Level”

    这种在工程设置中进行的配置,将为该生成的应用程序申请管理员权限

    说明:
    虽然test.exe已经通过方法二配置了需要管理员权限来启动,但是使用QProcess调用test.exe时,依然是没有以管理员权限启动,使用示例的方法可以解决此问题。一定要注意\要换成\\,而且要防止路径中有空格问题,appfilearg1等一定要用""包含起来

    ShellExecute函数说明:
    它的返回值是PROCESS_INFORMATION。
    返回值可能有的错误如下: = 0 {内存不足}
    ERROR_FILE_NOT_FOUND = 2; {文件名错误}
    ERROR_PATH_NOT_FOUND = 3; {路径名错误}
    ERROR_BAD_FORMAT = 11; {EXE 文件无效}
    SE_ERR_SHARE = 26; {发生共享错误}
    SE_ERR_ASSOCINCOMPLETE = 27; {文件名不完全或无效}
    SE_ERR_DDETIMEOUT = 28; {超时}
    SE_ERR_DDEFAIL = 29; {DDE 事务失败}
    SE_ERR_DDEBUSY = 30; {正在处理其他 DDE 事务而不能完成该 DDE 事务}
    SE_ERR_NOASSOC = 31; {没有相关联的应用程序}
    //ShowCmd 参数可选值:SW_HIDE = 0; {隐藏}
    SW_SHOWNORMAL = 1; {用最近的大小和位置显示, 激活}
    SW_NORMAL = 1; {同 SW_SHOWNORMAL}
    SW_SHOWMINIMIZED = 2; {最小化, 激活}
    SW_SHOWMAXIMIZED = 3; {最大化, 激活}
    SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}
    SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活}
    SW_SHOW = 5; {同 SW_SHOWNORMAL}
    SW_MINIMIZE = 6; {最小化, 不激活}
    SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}
    SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE}
    SW_RESTORE = 9; {同 SW_SHOWNORMAL}
    SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL}
    SW_MAX = 10; {同 SW_SHOWNORMAL}

    展开全文
  • 有时候程序是需要管理员权限才能做一些操作,比如对C盘进行读写(日志),没有管理员权限就什么也做不了。 解决办法: 右键项目,属性–&gt;链接器–&gt;清单文件–&gt;UAC执行级别–&gt;...

    有时候程序是需要管理员权限才能做一些操作,比如对C盘进行读写(日志),没有管理员权限就什么也做不了。
    解决办法:
    右键项目,属性–>链接器–>清单文件–>UAC执行级别–>requireAdministrator (/level=‘requireAdministrator’)
    如下图所示
    在这里插入图片描述

    展开全文
  • 前言 ...前端工程师通过Electron相关技术,可以开发基于Windows、Linux以及Mac系统的客户端应用,这些能力拓展了前端所能触摸的边界,释放了更大的想象空间. 如果客户端应用仅仅局限于页面内容的展现和操作,通过web相关...

    前言

    Electron是一款使用 JavaScript, HTMLCSSWeb 技术创建原生程序的框架,它内部集成了ChromiumNode.js.

    前端工程师通过Electron相关技术,可以开发基于WindowsLinux以及Mac系统的客户端应用,这些能力拓展了前端所能触摸的边界,释放了更大的想象空间.

    如果客户端应用仅仅局限于页面内容的展现和操作,通过web相关技术就可以实现.但由于Electron集成了Node.js,这便使开发的应用具备调用操作系统级别服务的能力.

    Electron调用某些操作系统的服务时,往往会受到系统权限的限制.比如在Linux系统下开发的程序,调用shell脚本命令时就需要在执行命令前面加上sudo,运行后再输入管理员密码,密码验证通过后脚本才能如期执行.

    win10操作系统以及mac系统对权限同样有着严格的把控.本文接下来将研究一下Electron应用如何在程序运行期间申请提权以及背后的实现原理.

    实践

    Electron应用运行期间想申请更高的执行权限,通过引用githup上的一个jssudo-prompt就能轻松实现.

    sudo-prompt没有外部的依赖以及原生模块的绑定,是一段完全使用nodejs编写的脚本.

    sudo-promptwindowsLinux以及Mac系统不同平台下对权限申请方式做了处理和封装,使Electron应用能支持多平台下的提权操作.接下来将演示一下sudo-prompt的使用方式,详情可点击访问 仓库地址.

    • 项目根目录下执行 npm install sudo-prompt --save 安装依赖.

    • 调用方式如下代码(当前最新版本9.2.1,如果版本不同请访问仓库地址查阅).

    创建一个对象options,属性名name(应用名称)可以自定义.但name只能为字母、数字和空格,最多不能超过70个字符.

    最后使用 sudo.exec('命令',...) 执行命令.sudo.exec一执行就会弹出申请权限的窗口,用户输完密码进入回调函数,stdout为执行命令后的输出结果.

    const sudo = require('sudo-prompt');
    const options = {
      name: 'Electron'
    };
    sudo.exec('echo hello', options,
      function(error, stdout, stderr) {
        if (error) throw error;
        console.log('stdout: ' + stdout);
      }
    );
    

    Linux图形界面的执行效果图如下:

    在这里插入图片描述

    原理分析

    sudo-prompt在不同平台下对权限做了不同的处理,接下来以LinuxWindows为例,探索一下它背后的实现原理.

    Linux

    当前Linux系统有四大图形桌面环境,分别是KDEGnomeXfceLXDE.其中KDEGnome都包含了一系列标准的桌面工具和很多功能强大的应用软件,使用体验逐渐逼近Windows.XfceLXDE属于轻量级桌面环境.

    这些桌面环境安装好后,一般默认会内置一些提升程序权限的指令,比如KDE图形界面默认内置/usr/bin/kdesudo,该路径下的kdesudo指令运行起来就能提示输入管理员密码,允许授权用户以其他身份执行程序.

    同样其他桌面环境也如此,利用这些内置的指令程序就能顺利申请管理员权限运行.

    具体做法可以先定义两个路径 const paths = ['/usr/bin/kdesudo', '/usr/bin/pkexec'],先在系统中去寻找这两个程序,看系统中包含哪一个就调用谁.

    如果找到了pkexec,拼接字符串格式如下:

     '"/usr/bin/pkexec" --disable-internal-agent "/bin/bash" -c "echo SUDOPROMPT; echo hello"'
    

    如果是kdesudo,拼接字符串格式如下:

     '"/usr/bin/pkexec" --comment "Electron wants to make changes.Enter your password to allow this." -d -- /bin/bash -c "echo SUDOPROMPT; echo hello"'
    

    字符串拼接好后,我们就可以利用Node.js的子进程Process.child.exec来执行上面的字符串命令.

    如果执行后发现报错,错误信息为No polkit authentication agent foun. 那可能是因为Linux系统内polkit相关的服务没有安装或没启动起来.比如安装的轻量级桌面xfce4(Ubuntu系统)可能会缺少这个模块,可以采用以下两步来解决.

    • 安装polkit sudo apt-get install policykit-1-gnome
    • 启动服务 /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &

    如果一切顺利,命令执行完后界面就会弹出输入密码框,只有当密码验证正确后才会执行上面拼接字符串的最后面的指令echo hello,这就是我们自定义希望获取系统权限后要执行的指令.

    Windows

    Windows系统下使用传统的CMD窗口去申请管理员的权限十分繁琐,但所幸有PowerShell的存在让一切都变的非常简单.

    Windows PowerShell是一种和CMD类似的命令行外壳程序,它可以使命令行用户和脚本编写者利用.NET Framework的强大功能完成想要的操作.从Windows 7开始系统就已经内置了PowerShell.

    有了PowerShell的加持,我们可以先把想要系统去执行的命令封装成一个command.bat文件(代码如下).

    @echo off
    chcp 65001>nul
    cd /d '/Users/kay/Desktop/demo/project'
    echo hello
    
    • @echo off关闭回显,不显示正在执行的批处理命令及执行的结果等.
    • chcp 65001将命令行窗口活动代码页设置为utf-8格式
    • cd切换到项目目录下
    • echo hello是最终希望系统执行的命令

    以上字符可通过字符串的拼接的方式组合而成,再通过Node.jsfs.writeFile将字符串写入到command.bat文件中储存起来.

    脚本文件准备好后,接下来拼接命令字符串如下:

    powershell.exe Start-Process -FilePath '/Users/kay/Desktop/demo/project/command.bat' -WindowStyle hidden -Verb runAs
    

    powershell通过添加参数-Verb runAs就能为应用程序提权,从而执行command.bat里面的脚本代码.

    字符串拼接好后,Node.js的子进程Process.child.exec执行字符串命令从而达到最终的目的.

    总结

    综上所述,不管是Windows还是Linux系统,它们都会内置一些提权的程序.只要找到这些程序的调用方式以及相关参数的含义,就能顺利为Electron应用申请到管理员权限从而完目标操作.

    展开全文
  • LINK += mt -manifest $$PWD/manifest.xml -outputresource:$$OUT_PWD/release/$$TARGET".exe" $$escape_expand(\n\t) } 编译结果如下 可以看到程序已经加了申请管理员权限。 还要注意的一点是Windows的环境变量里要...
  • 制作好的程序没有管理员权限,啥也干不了? 以下是一个可以达到在程序开始运行之前申请管理员权限 UAC.zip 感谢支持!
  • 申请管理员权限需:属性-->链接器-->清单文件-->用户账户级别-->请求管理员权限。用英文表示就是(Property-->Linker-->Manifest file-->UAC execute level-->requireAdminstor)...
  • Android应用程序申请系统管理员权限

    千次阅读 2016-08-27 11:43:55
    Android应用程序具备系统管理员权限 ONE Goal...那么怎么才能获得管理员权限呢?程序向获得系统管理员权限步骤: 1, 声明一个广播接受者MyPolicyReceiver继承DeviceAdminReceiver.(MyPolicyReceiver继承至BroadcastReceiv
  • 转载至: VS编写的程序申请管理员权限运行:https://blog.csdn.net/u013600225/article/details/71514825
  • 最新库房管理员工转正申请库房管理员辞职申请书WORD格式可编辑.docx
  • 天锐绿盾桌面管理系统管理员使用手册.pdf
  • 最新管理人员辞职申请书论坛管理员辞职申请书WORD可编辑.docx
  • 最新监控员离职申请书信息管理员辞职申请书DOC可编辑版.docx
  • ZT管理员破解申请

    2015-08-26 10:55:11
    中控科技考勤机 管理员密码因员工离职或遗忘 忘记UF100考勤机管理密码 可申请破解找回
  • 动物园管理员-源码

    2021-02-13 09:50:23
    动物园管理员
  • 相信已经有不少人已经知道在项目设置里面要求程序必须以管理员身份启动,但有些功能还是可以在非管理员状态下执行的,我们希望在需要的时候再获取到管理员权限。有时普通用户也无法提供管理员权限,我们要想让程序也...
  • .bat文件请求以管理员权限运行

    千次阅读 2019-11-29 18:20:37
    有些指令或文件需要管理员权限进行修改,如何在bat文件中请求用户授予管理员权限? 代码如下: @echo off @%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","",...
  • 2019年仓库管理员辞职申请书范文参考.doc
  • 在此,本人主要通过申请应用系统管理员权限,锁屏,设置密码,恢复出厂设置几个方面来简单介绍Android中如何给一个应用申请系统管理员的权限操作。 其中,这些主要的功能都是通过Android提供的一个类来完成的,这个...
  • 问题: windows系统下使用electron-builder打包的exe默认安装到Program Files文件夹下,如果后台代码里有对文件进行改动时,会报错没有...管理员权限 highestAvailable 可用的最高权限 找到electron-builder的配
  • 氨基戊醇 2014 年由@darwinyusef 创建的养老金领取者数据管理申请
  • 在WPF应用开发中,需要WPF操作后台注册的Windows Service,可是WIX打包的安装程序不具备赋予WPF App默认管理员权限。 因此,需要我们手工在WPF项目中添加管理员权限: 1、右击项目-&gt;Prop...
  • 动物园管理员:JetBrains
  • Qt管理员权限工具

    2016-07-05 16:13:41
    通过使用这个工具,可以为Qt程序增加盾牌标志,运行的时候申请管理员权限。这个功能常用于对系统关键位置进行文件操作、修改注册表等。
  • 开启Android超级管理员权限,可以实现锁屏,删除用户数据等操作
  • -2021外企网络管理员英文辞职申请书 --条据书信.docx
  • QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'uiAccess='false'" 上面那句死活都不得行,提示路径或权限错误,删掉后面部分就可以了 QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'" ...
  • 选择某个应用打开右键以管理员运行

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,225
精华内容 32,890
关键字:

怎样申请管理员