Programmas automātiskā palaišana Windows Server
Visdrošākais veids, kā panākt programmas automātisko palaišanu Windows Server, ir uzdevumu plānotājs (Task Scheduler) ar trigeri «At startup»: programma startē sistēmas ielādes laikā pat bez lietotāja pieteikšanās. Lietojumiem, kuriem vajadzīga darbvirsma, der autopalaišanas mape Startup vai reģistra atslēga Run. Apskatīsim visus trīs variantus.
Kuru veidu izvēlēties
| Veids | Kad palaižas | Vai vajadzīga pieteikšanās |
|---|---|---|
| Task Scheduler (At startup) | Sistēmas ielādes laikā | Nē |
| Task Scheduler (At log on) | Pieteikšanās brīdī | Jā |
| Startup mape | Lietotājam piesakoties | Jā |
| Reģistra Run atslēga | Lietotājam piesakoties | Jā |
Pakalpojumiem un fona procesiem, kas strādā visu diennakti, izmantojiet Task Scheduler ar «At startup». Lietojumiem ar saskarni — autopalaišanu pieteikšanās brīdī.
1. veids. Uzdevumu plānotājs (ieteicams)
Grafiskajā saskarnē
- Atveriet uzdevumu plānotāju (Task Scheduler) —
taskschd.msc. - Labajā pusē nospiediet Create Task (nevis Basic Task — tur ir vairāk iestatījumu).
- Cilnē General norādiet nosaukumu, izvēlieties Run whether user is logged on or not un atzīmējiet Run with highest privileges.
- Cilnē Triggers → New izvēlieties At startup.
- Cilnē Actions → New norādiet ceļu uz programmu (piemēram,
C:\apps\myapp.exe). - Nospiediet OK un ievadiet tā konta paroli, no kura uzdevums strādās.
Ar PowerShell
To pašu uzdevumu var izveidot ar vienu komandu virkni:
$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"
Pārbaudīt, vai uzdevums ir izveidots:
Get-ScheduledTask -TaskName "MyAppAutostart"
Palaist manuāli pārbaudei:
Start-ScheduledTask -TaskName "MyAppAutostart"
2. veids. Autopalaišanas mape (Startup)
Programma startēs, kad piesakās konkrētais lietotājs. Atveriet autopalaišanas mapi:
shell:startup
(visiem lietotājiem — shell:common startup). Ievietojiet tajā programmas saīsni. Ar PowerShell saīsni var izveidot programmatiski:
$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. veids. Reģistra Run atslēga
Vērtība atslēgā Run palaiž programmu lietotāja pieteikšanās brīdī:
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "MyApp" -Value "C:\apps\myapp.exe"
Visiem lietotājiem izmantojiet zaru HKLM: nevis HKCU:.
Biežāk uzdotie jautājumi
Programma nestartē sistēmas ielādes laikā — kāpēc?
Visbiežāk lietojumam vajadzīga interaktīva darbvirsma, bet uzdevums iestatīts kā «Run whether user is logged on or not». Tādas grafiskās programmas labāk palaist ar trigeri At log on vai no Startup mapes.
Kā automātiski palaist programmu ar administratora tiesībām?
Uzdevumu plānotājā ieslēdziet Run with highest privileges. Tad uzdevums startēs ar paaugstinātām tiesībām bez UAC pieprasījuma.
Ar ko Task Scheduler ir labāks par Startup mapi?
Plānotājs prot palaist procesus pirms lietotāja pieteikšanās, ar vajadzīgajām tiesībām, pēc grafika un ar restartu kļūmes gadījumā. Startup mape darbojas tikai pēc pieteikšanās sistēmā.
Kā izņemt programmu no automātiskās palaišanas?
Uzdevumam: Unregister-ScheduledTask -TaskName "MyAppAutostart" -Confirm:$false. Reģistram: Remove-ItemProperty. Mapei — izdzēsiet saīsni no shell:startup.
Vajadzīgs serveris, kas jūsu pakalpojumus tur palaistus visu diennakti? Paņemiet Windows VPS vai apskatiet VPS nomas tarifus.