Electron 应用程序未在 windows 启动时启动
Electron app not launching at windows startup
我正在使用 electron app.setLoginItemSettings(settings) 让我的应用程序在登录时自动启动。这就是我实现它的方式:
const executable_path = process.execPath;
const exeName = path.basename(process.execPath);
...
const createWindow = () => {
...
ipcMain.on('close-me', (evt, arg) => {
var boot = settings.get("startatboot");
if (boot) {
app.setLoginItemSettings({
openAtLogin: true,
path: executable_path,
name: exeName,
args: [
'--processStart', `"${exeName}"`,
'--process-start-args'
]
})
} else {
app.setLoginItemSettings({
openAtLogin: false,
openAsHidden: false
});
}
app.quit()
});
...
};
寄存器中的结果如下 (Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)
Test Autorun.exe
对于 name
C:\Program Files\Test Autorun\Test Autorun.exe --processStart "Test Autorun.exe" --process-start-args
对于 data
现在在我的 package.json
文件中,我定义了以下内容:
{
"name": "apptest",
"productName": "Test Autorun",
"version": "1.0.0",
"description": "Test Autorun",
"main": "src/index.js",
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish",
"lint": "echo \"No linting configured\"",
"build-installer": "electron-builder"
},
"build": {
"appId": "apptest",
...
现在我的问题是应用程序在启动时没有 运行ning,我不知道为什么会这样,我尝试更改很多值以最终得到这个寄存器内容。之前的所有尝试都显示为 windows startup settings
.
中的不同程序
我必须在寄存器中填写我认为正确的数据,但我遗漏了一些东西,但我不知道它是什么。任何帮助都会大有帮助,谢谢。
编辑:
当我正常启动应用程序时,它总是要求用户允许带有 unknown publisher
的应用程序对设备进行更改。我不知道这是否是该应用程序无法 运行 启动的原因,或者该应用程序是否会 运行 显示相同的消息等待用户批准。
编辑 2:
它是在 HKEY_CURRENT_USER
而不是 HKEY_LOCAL_MACHINE
中添加寄存器
正如我所怀疑的那样,它与 unknown publisher
弹出窗口有关;因此,当我使用如下所示的命令行代码编辑与 UAC
相关的注册表项时,应用程序在启动时启动。
%windir%\System32\reg.exe ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
我正在使用 electron app.setLoginItemSettings(settings) 让我的应用程序在登录时自动启动。这就是我实现它的方式:
const executable_path = process.execPath;
const exeName = path.basename(process.execPath);
...
const createWindow = () => {
...
ipcMain.on('close-me', (evt, arg) => {
var boot = settings.get("startatboot");
if (boot) {
app.setLoginItemSettings({
openAtLogin: true,
path: executable_path,
name: exeName,
args: [
'--processStart', `"${exeName}"`,
'--process-start-args'
]
})
} else {
app.setLoginItemSettings({
openAtLogin: false,
openAsHidden: false
});
}
app.quit()
});
...
};
寄存器中的结果如下 (Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)
Test Autorun.exe
对于 name
C:\Program Files\Test Autorun\Test Autorun.exe --processStart "Test Autorun.exe" --process-start-args
对于 data
现在在我的 package.json
文件中,我定义了以下内容:
{
"name": "apptest",
"productName": "Test Autorun",
"version": "1.0.0",
"description": "Test Autorun",
"main": "src/index.js",
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish",
"lint": "echo \"No linting configured\"",
"build-installer": "electron-builder"
},
"build": {
"appId": "apptest",
...
现在我的问题是应用程序在启动时没有 运行ning,我不知道为什么会这样,我尝试更改很多值以最终得到这个寄存器内容。之前的所有尝试都显示为 windows startup settings
.
我必须在寄存器中填写我认为正确的数据,但我遗漏了一些东西,但我不知道它是什么。任何帮助都会大有帮助,谢谢。
编辑:
当我正常启动应用程序时,它总是要求用户允许带有 unknown publisher
的应用程序对设备进行更改。我不知道这是否是该应用程序无法 运行 启动的原因,或者该应用程序是否会 运行 显示相同的消息等待用户批准。
编辑 2:
它是在 HKEY_CURRENT_USER
而不是 HKEY_LOCAL_MACHINE
正如我所怀疑的那样,它与 unknown publisher
弹出窗口有关;因此,当我使用如下所示的命令行代码编辑与 UAC
相关的注册表项时,应用程序在启动时启动。
%windir%\System32\reg.exe ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f