Tenho usado com sucesso vários scripts na inicialização, criando atalhos para eles neste diretório:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
no entanto, um dos scripts não será carregado quando eu fizer login novamente após o logoff. O script é um script AHK usado como uma alternância para alternar entre exibições e fontes de som:
#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
O script funciona bem quando eu executo.
Então, pesquisei por que isso pode não estar carregando e notei que outro usuário estava usando um diretório de inicialização diferente do mostrado acima:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
Percebi que colocar o atalho para este arquivo AHK neste diretório garantiu que ele fosse carregado após o login novamente no Windows, então minha pergunta é:
quais são as diferenças entre esses dois diretórios para itens de inicialização:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
AppData contém dados de aplicativos específicos por perfil de usuário e ProgramData contém dados de aplicativos para toda a máquina local. Portanto, a única razão pela qual consigo pensar é que você faz login novamente como um usuário diferente (quando o programa se copia para a inicialização do AppData), a entrada não é por máquina e não é executada.
A melhor maneira de adicionar programas de inicialização é adicionar uma entrada às chaves de registro
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
(máquina local), ouHKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
(por usuário) ouHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
(Windows 32 em entradas do Windows 64).