Electron 实现以管理员权限自启动

warning: 这篇文章距离上次修改已过211天,其中的内容可能已经有所变动。

Electron 其实提供的跨平台的通用开机自启动支持。

但是因为Windows系统的限制,如果您的Electron在运行时要使用管理员权限的话,这样设置的自启动会失效。

目前解决方法有两种,一种是服务,另一种是写注册表启动项

服务的方案,优点就是,在启动的时候不会弹出UAC,缺点是,需要额外的精力来维护这个服务支持组件。

所以,个人比较推荐使用写注册表的方式

缺点就是开机会弹UAC~ 不过无伤大雅

let cp = require('child_process');
// 获取可执行文件位置
const ex=process.execPath;

// 定义事件,渲染进程中直接使用

// 开启 开机自启动
ipcMain.on('openAutoStart',()=>{
    console.log('updateExe',ex)
        // 注释的是electron官方提供的自启方法
        // app.setLoginItemSettings({
        //     openAtLogin: true,//是否自启
        //     openAsHidden:false,//启动后是否显示窗体
        //     path: ex,//启动路径
        //     args: [] //启动时的参数
        // });
        cp.exec(`REG ADD HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v 这是写入的注册表项字段名 /t REG_SZ /d "${ex}" /f`,function(err){
            console.log(err);
        });
});
// 关闭 开机自启动
ipcMain.on('closeAutoStart',()=>{
        // 注释的是electron官方提供的自启方法
        // app.setLoginItemSettings({
        //     openAtLogin: false,//是否自启
        //     openAsHidden:false,//启动后是否显示窗体
        //     path: ex,//启动路径
        //     args: [] //启动时的参数
        // });
        cp.exec("REG DELETE HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v 这是写入的注册表项字段名 /f",function(err){
            console.log(err);
        });
})

//检查注册表项是否存在
ipcMain.handle('checkAutoStart',async ()=>{
    return await new Promise((resolve, reject)=>{
        cp.exec("REG QUERY HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v ClonBrowser",function(err,stdout,stderr){
            resolve(stdout);
            console.log(stderr);
            console.log(err);
        });
    })
})

已有 12 条评论

  1. 马老师 马老师

    HelloWorld,BYEBYE,DINGDING

  2. 今天又是想婷婷的一天 今天又是想婷婷的一天

    我唱着妈妈唱着的歌谣

    牡丹儿绣在金匾上

    我哼着爸爸哼过的曲调

    绿绿的草原上牧牛羊

    环绕着扇动银翅的蝶啊

    追回那遥远古老时光

    传诵着自由勇敢的鸟啊

    一直不停唱

  3. 今天又是想婷婷的一天 今天又是想婷婷的一天

    非我执笔

  4. 今天又是想婷婷的一天 今天又是想婷婷的一天

    裙摆飘飘,袅袅婷婷~~~

  5. 美婷婷 美婷婷

    每次摸鱼的时候总是止不住的想婷婷呀!

  6. 美婷婷 美婷婷

    每个孤独寂寞冷的加班夜晚,总是想起婷婷

  7. 隔壁老王 隔壁老王

    丁丁已经不更新了,看来是要凉了zzzzz

  8. 美婷婷 美婷婷

    婷婷已经不更新了,看来已经是凉了zzzzz

  9. 你好 你好

    能不能搞个,标签页,大全。

    1. 额,意思是提供一个页面显示全部的标签?

  10. 就是就是.
    婷婷已经不更新了,看来已经是凉了zzzzz

  11. 666 666

    666

添加新评论

* 人工审核评论,通过后即可正常显示。《隐私政策》