electron应用打包为exe在windows下获得管理员权限


总体来说有2种办法

第一种直接修改注册表

const {Registry} = require('rage-edit');
const {app } = require('electron');

module.exports = (cbSus,cbErr)=>{
    Registry.set(
        'HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers',
        app.getPath('exe'), 
        'RUNASADMIN',
        'REG_SZ', 
    )
}

const {exec} = require('child_process');
const dosCommand = `REG ADD HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers /v app.getPath('exe') /t REG_SZ /d RUNASADMIN /f`
exec(dosCommand, { encoding: 'utf-8' }, function(err: any, stdOut: any) {
                            if (err) {
                                console.log('error:' + err.toString());
                            }
                        })

  这种方法的缺点是本身操作注册表可能就会遇到权限问题

第二种则更为稳妥

在打包electron应用的时候,添加程序清单文件,提升应用权限。

在项目根目录下添加name.manifest

写入内容:

 1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 2 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 3     <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="ApplicationController.exe.manifest" type="win32"></assemblyIdentity>
 4     <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 5         <security>
 6             <requestedPrivileges>
 7                 <requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>
 8             </requestedPrivileges>
 9         </security>
10     </trustInfo>
11     <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
12         <application>
13             <!--The ID below indicates application support for Windows Vista -->
14             <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
15             <!--The ID below indicates application support for Windows 7 -->
16             <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
17         </application>
18     </compatibility>
19 </assembly>

 

保存之后,在项目打包配置中添加配置输出,这样安装和卸载应用时,就会自动提示用户授权,完成应用获取权限

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM