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

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

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 软件名",function(err,stdout,stderr){
            resolve(stdout);
            console.log(stderr);
            console.log(err);
        });
    })
})

已有 14 条评论

  1. 马老师 马老师

    HelloWorld,BYEBYE,DINGDING

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

    我唱着妈妈唱着的歌谣

    牡丹儿绣在金匾上

    我哼着爸爸哼过的曲调

    绿绿的草原上牧牛羊

    环绕着扇动银翅的蝶啊

    追回那遥远古老时光

    传诵着自由勇敢的鸟啊

    一直不停唱

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

    非我执笔

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

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

  5. 美婷婷 美婷婷

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

  6. 美婷婷 美婷婷

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

  7. 隔壁老王 隔壁老王

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

  8. 美婷婷 美婷婷

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

  9. 你好 你好

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

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

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

  11. 666 666

    666

  12. 仰慕大佬的粉丝 仰慕大佬的粉丝

    高亮代码块用的啥插件啊

    1. 现在我用的是自己魔改了下的@老高大哥的插件《Table Of Contents 自动文章目录》,这个插件是遍历正则匹配标签,并插入id,然后输出目录列表并插入文章最开头,。
      下载地址:http://pic.idzd.top/typecho-theme-waxy/TableOfContents.tar.gz

添加新评论

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