Electron 实现以管理员权限自启动
warning:
这篇文章距离上次修改已过1017天,其中的内容可能已经有所变动。
Electron 其实提供的跨平台的通用开机自启动支持。
但是因为Windows系统的限制,如果您的Electron在运行时要使用管理员权限的话,这样设置的自启动会失效。
目前解决方法有两种,一种是服务,另一种是写注册表启动项
服务的方案,优点就是,在启动的时候不会弹出UAC,缺点是,需要额外的精力来维护这个服务支持组件。
所以,个人比较推荐使用写注册表的方式
缺点就是开机会弹UAC~ 不过无伤大雅
如果强制使用32位路径的话添加
/reg:32
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);
});
})
})
更多用法可以使用
REG /?
命令查看
HelloWorld,BYEBYE,DINGDING
我唱着妈妈唱着的歌谣
牡丹儿绣在金匾上
我哼着爸爸哼过的曲调
绿绿的草原上牧牛羊
环绕着扇动银翅的蝶啊
追回那遥远古老时光
传诵着自由勇敢的鸟啊
一直不停唱
非我执笔
裙摆飘飘,袅袅婷婷~~~
每次摸鱼的时候总是止不住的想婷婷呀!
每个孤独寂寞冷的加班夜晚,总是想起婷婷
丁丁已经不更新了,看来是要凉了zzzzz
婷婷已经不更新了,看来已经是凉了zzzzz
能不能搞个,标签页,大全。
额,意思是提供一个页面显示全部的标签?
就是就是.
婷婷已经不更新了,看来已经是凉了zzzzz
666
高亮代码块用的啥插件啊
现在我用的是自己魔改了下的@老高大哥的插件《Table Of Contents 自动文章目录》,这个插件是遍历正则匹配标签,并插入id,然后输出目录列表并插入文章最开头,。
下载地址:http://pic.idzd.top/typecho-theme-waxy/TableOfContents.tar.gz