Windows에서 특정 시작 매개 변수를 사용하여 서비스를 시작하는 방법


17

특정 매개 변수를 사용하여 서비스를 시작하려면 어떻게합니까? 에서 또 다른 질문 나는 발견했다

네트 스타트 servicename blah

그러나 이것을 시도하면 net구문 오류가 발생합니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집 : 명확히하기 위해net start servicename잘 작동하지만 매개 변수를 서비스에 전달해야합니다. services.msc서비스를 시작하기 전에 시작 매개 변수를 작성하여수동 으로이 작업을 수행 할 수 있습니다. 그러나 스크립트에서 어떻게 할 수 있습니까?

또 다른 편집 : 죄송하지만 내 질문은 잘못되었습니다 . 내 테스트에는 더 많은 매개 변수가 있었으며/blah net start불평하지 않았습니다. 사실, 슬래시로 시작하는 것은 괜찮습니다 . 그래서net start servicename /blah작품,net start servicename blah작동하지 않습니다. 내가 필요하기 때문에net start servicename /foo bar그것이bar문제입니다.

답변:


29
sc 시작 fooservice arg1 arg2 ...

나는 당신의 대답을 어떻게 그리워했는지 잘 모르겠지만, 지금 (사고로) 그것을 발견하게되어 매우 기쁩니다. 이것으로 시작하지 않는 매개 변수에서도 매력처럼 작동합니다 /. 고마워요!
— sbi

2018 년이며 Windows 10에서는 "sc start ..."또는 "net start ..."가 작동하지 않는 것 같습니다. 레지스트리 편집은 serverfault.com/questions/507561/…에서
— MarcH

8

NET START내가 아는 한 임의의 매개 변수를 전달할 수 없습니다 (/ 접두사가 있어야 함) 올바른 레지스트리 키를 수정하고 서비스를 중지 / 시작하는 것이 올바른 방법이라고 생각합니다. 사용자 정의 서비스를 MyService라고 가정하십시오.

[HKLM\SYSTEM\CurrentControlSet\Services\MyService]
"ImagePath":C:\Projects\MyService\bin\MyService.exe Parameter1 Parameter2

실제로 더 나은 방법은 레지스트리 나 파일 시스템과 같이 서비스가 알고있는 곳에 구성을 저장하고 필요한 값을 읽는 것입니다. 보시다시피 커맨드 라인을 커스터마이징하는 것은 생각보다 조금 더 고통 스럽습니다.

우연히 .NET 개발 서비스 인 경우 파일 시스템에서 실행 파일의 복사본을 n 개 만들 수 있으며 각각 적절한 app.config 파일에서 매개 변수를 자동으로 가져옵니다.

Win32 상자 외부로 너무 밟은 것 같습니다. 이것은 맞춤형 개발처럼 들리므로 다른 제공 솔루션 중 하나는 이상적이지는 않지만 올바르게 작동하고 더 안전한 방법입니다.


어. 서비스는 구성 파일을 가져옵니다. 기본 파일 이름을 사용하거나 전달 된 이름을 사용합니다. 두 개의 서로 다른 서비스 인스턴스가 실행되어야하므로 서로 다른 구성 파일을 가리켜 야합니다. 레지스트리를 다루는 것은 매우 못생긴 해킹으로 보입니다. 실제로 다른 방법이 있습니까 (GUI)?
— sbi

Goyuix, 편집 한 질문을 참조하십시오. net start 않는 매개 변수를 사용할 수 있지만, 만로 시작 /.
— sbi

Goyuix, 나는 지금 사용한다 sc.exe. grawity의 답변을 참조하십시오 (어쨌든 놓쳤습니다).
— sbi

4

를 사용할 때 각 매개 변수 앞에 슬래시가 필요합니다 net start. 또한 공백이있는 매개 변수를 인용하십시오.

net start servicename /param0 /"param1 with spaces" /"/param2_has_slash"

내 문제를 다시 봐 슬래시로 시작하는 매개 변수도 있습니다. 그럼 내가 어떻게 통과할까요?
— sbi

이것을 시도하십시오 : net start servicename / "/ foo"/ bar
— Even Mien

3

net start servicename /foo 단일 논쟁

net start servicename /"foo bar" 문자열 또는 인수 목록

참고 :이 질문은 8 세이지 만 승인 된 답변에 대해 언급 할 평판이 없으며 2018 년에도 여전히 Google 최고의 결과이므로 최종 편집 질문과 관련하여 현재 작동중인 것을 명확히하고 싶었습니다.


참고 : 나는 당신에게 공감대를 주었으므로 이제 당신의 대답은 4 위이며, 당신은 약간의 대답을 얻었습니다. 여기서 즐기십시오! :-)
— sbi

1

제어판 서비스에 나타나는 실제 서비스 이름을 사용해야합니다. 공백이 있으면 서비스 이름을 따옴표로 묶어야합니다.

실제 서비스 이름을 얻으려면 net start명령 프롬프트에 매개 변수없이 입력 하십시오. 실제 서비스 이름을 얻을 수 있도록 실행중인 모든 서비스 목록을 제공해야합니다. 그런 다음 사용하십시오net start <servicename>


Robert, 내가 설치 한 다음 스크립트로 시작하는 서비스입니다. 난 net start "my-service-name"괜찮아 그건 net start "my-service-name" /blah나에게 오류 메시지를 제공한다. 나는 또한 시도 net start "my-service-name" -blah했고 이것도 구문 오류입니다.
— sbi

0

InstSrv와 SrvAny가이를 지원할 수 있습니까? 가이드 및 링크


나는 그것을 간단히 보았고 그렇게 생각하지 않습니다. (잘못되면 수정하십시오.) 실제 서비스 실행 파일이 있고 정상적으로 작동합니다. 스크립트에서 스크립트를 설치하고 시작해야하며 매개 변수를 서비스에 전달해야합니다.
— sbi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.