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ą

  1. Atverkite užduočių planuoklę (Task Scheduler)taskschd.msc.
  2. Dešinėje spustelėkite Create Task (ne Basic Task — taip gausite daugiau nustatymų).
  3. Kortelėje General nurodykite pavadinimą, pasirinkite Run whether user is logged on or not ir pažymėkite Run with highest privileges.
  4. Kortelėje Triggers → New pasirinkite At startup.
  5. Kortelėje Actions → New nurodykite kelią iki programos (pavyzdžiui, C:\apps\myapp.exe).
  6. 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.

Laura Zariņa