Windows 2016에서 새로운 서비스(AppOneTest)를 만들려고 합니다. 이 서비스는 services.msc에서 사용할 수 있으며 서비스가 시작될 때마다(AppOneTest) 프로세스 탐색기를 시작해야 합니다.
$ServiceName = "ApplicationOneTest"
$ServiceDisplayName = "AppOneTest"
$ServiceDescription = "This launches process explorer"
$ExecutablePath = "C:\processexp\procexp64.exe"
$ScriptPath = "C:\Backup\LaunchScript.ps1"
$LaunchScript = @"
# Script to launch processexp
& '$ExecutablePath'
"@
$LaunchScript | Out-File -FilePath $ScriptPath -Encoding utf8
New-Service -Name $ServiceName -DisplayName $ServiceDisplayName -Description $ServiceDescription -BinaryPathName "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File $ScriptPath" -StartupType Automatic
sc.exe config $ServiceName obj= "domain\username" password= "******" type= interact
Start-Service -Name $ServiceName
이 스크립트는 서비스 생성을 시도하고 해당 서비스를 시작하려고 시도합니다. 그런데 생성된 서비스를 시작하려고 하면 멈춰서 시작되지 않습니다.
어떤 도움이라도 대단히 감사하겠습니다.
답변1
대화형 서비스는 Windows Vista에서 대부분 비효율적이므로 사용해서는 안 됩니다.
서비스 프로그램은 특정 인터페이스를 준수해야 하며 서비스 제어 관리자와 상호 작용하여 상태 등을 신호로 보내야 합니다. Process Explorer나 다른 일반 응용 프로그램은 이 작업을 수행하지 않습니다.
다음과 같은 서비스 래퍼를 사용할 수 있습니다.NSSM임의의 프로그램을 서비스로 실행합니다. 이는 Java 서버 애플리케이션에 널리 사용되는 솔루션입니다.
UI 테스트를 실행하려면 대신 자동 로그인이 구성되고 절전/잠금이 비활성화된 VM을 사용한 다음 항상 열려 있는 일반 세션에서 테스트를 실행해야 합니다.
답변2
대화형 시스템 서비스를 실행하려고 합니다. 이는 권장되지 않으며 내 대답 외에도 해결해야 할 몇 가지 복잡성이 있을 수 있습니다. 모든 프로그램이 시스템 서비스 프로토콜을 사용하여 실행되도록 만들어진 것은 아니며 Explorer가 적합한지 의심스럽습니다. 내가 나열한 유틸리티를 찾을 수도 있습니다. 이 답변 이러한 부적합한 프로그램에서 임시 서비스를 만드는 데 유용합니다. srvany-ng그리고 NSSM.
최소한 로그인한 사용자와 동일한 사용자 계정으로 서비스를 실행해야 합니다. PowerShell에서 이는PSCredential 사용자 자격 증명이 포함된 개체입니다.
예제 코드:
$username = "username"
$password = "password"
$securepassword = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($username, $securepassword)
New-Service [...] -Credential $cred
참고자료: