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