这两个启动项目录有什么区别?

这两个启动项目录有什么区别?

通过在此目录中创建快捷方式,我已经在启动时成功使用了多个脚本:

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

答案1

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 64 条目上的 Windows 32)注册表项添加一个条目。

相关内容