Programos automatinis paleidimas Windows Server: Task Scheduler
Patikimiausias būdas automatiškai paleisti programą Windows Server sistemoje — užduočių planuoklė (Task Scheduler) su trigeriu „At startup”: programa startuoja įkeliant sistemą, net neprisijungus vartotojui. Programoms, kurioms reikia darbalaukio, tinka automatinės paleisties aplankas arba registro Run šaka. Aptarkime visus tris variantus.
Kurį būdą pasirinkti
| Būdas | Kada paleidžiama | Ar reikia vartotojo prisijungimo |
|---|---|---|
| Task Scheduler (At startup) | Įkeliant OS | Ne |
| Task Scheduler (At log on) | Prisijungus | Taip |
| Startup aplankas | Prisijungus vartotojui | Taip |
| Registro Run | Prisijungus vartotojui | Taip |
Tarnyboms ir foniniams procesams, veikiantiems visą parą, naudokite Task Scheduler „At startup”. Programoms su sąsaja — automatinę paleistį prisijungiant.
1 būdas. Užduočių planuoklė (rekomenduojama)
Per grafinę sąsają
- Atverkite užduočių planuoklę (Task Scheduler) —
taskschd.msc. - Dešinėje spustelėkite Create Task (ne Basic Task — taip gausite daugiau nustatymų).
- Kortelėje General nurodykite pavadinimą, pasirinkite Run whether user is logged on or not ir pažymėkite Run with highest privileges.
- Kortelėje Triggers → New pasirinkite At startup.
- Kortelėje Actions → New nurodykite kelią iki programos (pavyzdžiui,
C:\apps\myapp.exe). - Spustelėkite OK ir įveskite paskyros, kurios vardu veiks užduotis, slaptažodį.
Per PowerShell
Tokią pačią užduotį sukursite viena komandų serija:
$action = New-ScheduledTaskAction -Execute "C:\apps\myapp.exe"
$trigger = New-ScheduledTaskTrigger -AtStartup
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName "MyAppAutostart" -Action $action -Trigger $trigger -Settings $settings -RunLevel Highest -User "SYSTEM"
Patikrinti, ar užduotis sukurta:
Get-ScheduledTask -TaskName "MyAppAutostart"
Paleisti rankiniu būdu patikrinimui:
Start-ScheduledTask -TaskName "MyAppAutostart"
2 būdas. Automatinės paleisties aplankas
Programa startuos prisijungus konkrečiam vartotojui. Atverkite automatinės paleisties aplanką:
shell:startup
(visiems vartotojams — shell:common startup). Įdėkite ten programos nuorodą. Per PowerShell nuorodą galima sukurti programiškai:
$startup = [Environment]::GetFolderPath('Startup')
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut("$startup\MyApp.lnk")
$shortcut.TargetPath = "C:\apps\myapp.exe"
$shortcut.Save()
3 būdas. Registro Run šaka
Reikšmė Run šakoje paleidžia programą vartotojui prisijungus:
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "MyApp" -Value "C:\apps\myapp.exe"
Visiems vartotojams naudokite šaką HKLM: vietoj HKCU:.
Dažni klausimai
Programa nestartuoja įkeliant sistemą — kodėl?
Dažniausiai programai reikia interaktyvaus darbalaukio, o užduotis sukonfigūruota „Run whether user is logged on or not”. Tokias grafines programas geriau paleisti trigeriu At log on arba per Startup aplanką.
Kaip automatiškai paleisti programą administratoriaus teisėmis?
Task Scheduler lange įjunkite Run with highest privileges. Tada užduotis startuos su išplėstinėmis teisėmis be UAC užklausos.
Kuo Task Scheduler geresnis už automatinės paleisties aplanką?
Planuoklė moka paleisti procesus dar prieš vartotojo prisijungimą, su reikiamomis teisėmis, pagal tvarkaraštį ir su pakartotiniu paleidimu po klaidos. Startup aplankas veikia tik prisijungus prie sistemos.
Kaip pašalinti programą iš automatinės paleisties?
Užduočiai: Unregister-ScheduledTask -TaskName "MyAppAutostart" -Confirm:$false. Registrui: Remove-ItemProperty. Aplankui — pašalinkite nuorodą iš shell:startup.
Reikia serverio, kuris laikytų jūsų tarnybas paleistas visą parą? Paimkite Windows VPS arba peržiūrėkite VPS nuomos planus.