通过在此目录中创建它们的快捷方式,我已经成功地在启动时使用了几个脚本:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
但是,当我注销后重新登录时,其中一个脚本将不会加载。该脚本是一个 AHK 脚本,用作在显示和声源之间切换的开关:
#a::
toggle += 1
if (toggle = 0)
{
Run nircmd setdefaultsounddevice "BEDROOM"
soundToggleBox("BEDROOM")
}
else if (toggle = 1)
{
Run nircmd setdefaultsounddevice "LIVING_ROOM"
soundToggleBox("LIVING_ROOM")
toggle := -1
Return
; Display sound toggle GUI
soundToggleBox(Device)
{
IfWinExist, soundToggleWin
{
Gui, destroy
}
Gui, +ToolWindow -Caption +0x400000 +alwaysontop
Gui, Add, text, x35 y8, Default sound: %Device%
SysGet, screenx, 0
SysGet, screeny, 1
xpos:=screenx-275
ypos:=screeny-100
Gui, Show, NoActivate x%xpos% y%ypos% h30 w200, soundToggleWin
SetTimer,soundToggleClose, 2000
}
soundToggleClose:
SetTimer,soundToggleClose, off
Gui, destroy
Return
我执行时脚本运行良好。
所以我查了一下为什么这可能没有加载,并注意到另一个用户使用的启动目录与上面显示的不同:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
我注意到将这个 AHK 文件的快捷方式放在这个目录中可以确保它在重新登录到 Windows 后加载,所以我的问题是:
这两个启动项目录有什么区别:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
AppData 包含特定于每个用户配置文件的应用程序数据,而 ProgramData 包含整个本地计算机的应用程序数据。所以我能想到的唯一原因是您以不同的用户身份重新登录(当程序将自身复制到 AppData Startup 时)然后该条目不是每台机器,然后它不会执行。
添加启动程序的最佳方法是将条目添加到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
(本地计算机)或HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
(每个用户)或HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
(Windows 32 on Windows 64 条目)注册表项。