Windows'da belirli başlangıç ​​parametreleriyle bir hizmet nasıl başlatılır


18

Belirli parametrelerle bir hizmeti nasıl başlatırım? Başka bir soruda buldum

net başlangıç ​​hizmet adı falan

ama bunu netdenersem, bana bir sözdizimi hatası atar.

Neyi yanlış yapıyorum?

Düzenleme: Açıklığa kavuşturmak içinnet start servicenamegayet iyi çalışıyor, ama hizmete parametreleri geçmek gerekiyor. services.mscHizmeti başlatmadan önce bir start parametresini doldurarakbunu manuel olarak yapabilirim. Ama bunu bir senaryodan nasıl yapabilirim?

Başka bir düzenleme: Üzgünüm, ama sorum yanıltıcıydı . Testlerimde çok daha fazla parametre vardı ve bu/blah net startşikayetetmiyor. Aslında, eğik çizgi ile başlayan her şey yolunda . Yaninet start servicename /blahçalışıyor,net start servicename blahçalışmıyor. Ben gerektiğindennet start servicename /foo bar, bu kadarbarsorun olduğunu.

Yanıtlar:


29
sc başlangıç ​​fooservice arg1 arg2 ...

O zaman cevabını nasıl özleyebileceğimi bilmiyorum, ama şimdi (kazayla) bulduğumdan kesinlikle çok memnunum. Bu bir cazibe gibi çalışır - başlangıçta olmayan parametrelerde bile /. Çok teşekkürler!
sbi

Bu 2018 ve ne "sc start ..." ne de "net start ..." Windows 10'da çalışıyor gibi görünüyor. Kayıt defterini düzenlemek serverfault.com/questions/507561/…
MarcH

8

NET STARTBildiğim kadarıyla rastgele parametreler geçirmenize izin vermeyecektir (/ ile ön eklenmiş olmaları gerekir), doğru yolun uygun kayıt defteri anahtarını değiştirmek ve hizmeti durdurmak / başlatmak olduğuna inanıyorum. Özel hizmetinizin MyService olarak adlandırıldığı varsayılarak:

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

Gerçekten de, daha iyi bir yol, yapılandırmanızı, belki de kayıt defteri veya dosya sistemi gibi hizmetin bildiği bir yerde saklamak ve ihtiyacınız olan değerleri okumaktır. Gördüğünüz gibi komut satırını özelleştirmek olması gerekenden biraz daha acı verici.

Şans eseri bu, .NET tarafından geliştirilen bir hizmetse , dosya sisteminizde yürütülebilir dosyanın n kopyasını oluşturabilir ve her birinin parametreleri uygun app.config dosyasından otomatik olarak almasını sağlayabilirsiniz.

Win32 kutusunun çok dışına çıkmış gibi görünüyorsunuz. Bu, özel geliştirme gibi göründüğünden, sunulan ideal çözümlerden herhangi biri, belki de idealiniz olmasa da, doğru şekilde çalışacak ve daha güvenli bir yol olacaktır.


Ugh. Hizmet bir yapılandırma dosyası alır. Varsayılan bir dosya adı veya bu dosyaya aktarılmış bir dosya adı kullanır. Hizmetin iki farklı örneğine ihtiyacım olduğundan, bunları farklı yapılandırma dosyalarına yönlendirmem gerekiyor. Kayıt defteri ile uğraşmak çok çirkin bir kesmek gibi görünüyor. Gerçekten bundan (ve GUI'den) başka bir yol yok mu?
sbi

Goyuix, düzenlenen sorumu görün. net start yok parametrelerini kabul, ama sadece bu bir ile başlayan /.
sbi

Goyuix, şimdi kullanıyorum sc.exe. Grawity'nin cevabına bakın (o zaman bir şekilde kaçırmayı başardım).
sbi

4

Kullanırken her parametreden önce eğik çizgi kullanmanız gerekir net start. Ayrıca boşlukları olan parametreleri belirttiğinizden emin olun.

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

Sorunuma tekrar bakın. Ben de bir eğik çizgi ile başlamak zorunda parametreler var. Bunları nasıl geçirdim?
sbi

Bunu deneyin: net start servicename / "/ foo" / bar
Hatta Mien

3

net start servicename /foo tek bir argüman için

net start servicename /"foo bar" bir dize veya argüman listesi için

Not : Bu soru 8 yaşında, ancak kabul edilen cevap hakkında yorum yapma üne sahip değilim ve bu 2018'de hala en iyi bir google sonucu.


Not: Sana bir oylama verdim, şimdi cevabın 4. pozisyonda ve biraz tekrar çarpman var. Burada eğlenin! :-)
sbi

1

Kontrol panelinde, servislerde göründüğü şekliyle gerçek hizmet adını kullanmanız gerekir. Boşluk içeriyorsa, hizmet adının etrafına tırnak işareti koymanız gerekir.

Gerçek hizmet adını almak için net startkomut isteminde herhangi bir parametre olmadan yazmanız yeterlidir. Gerçek hizmet adını alabilmeniz için size çalışan tüm hizmetlerin bir listesini vermelidir . Sonra sadecenet start <servicename>


Robert, kurduğum ve daha sonra senaryoda başladığım bir hizmet. Yapmam net start "my-service-name"sadece para cezası. Bu net start "my-service-name" /blahbana bir hata mesajı veriyor. Ben de denedim net start "my-service-name" -blahve bu da bir sözdizimi hatası.
sbi

0

InstSrv ve SrvAny bu konuda yardımcı olabilir mi? Rehber ve Linkler


Kısaca baktım ve sanmıyorum. (Yanılıyorsam lütfen beni düzeltin.) Gerçek bir hizmet çalıştırılabilir dosyası var ve iyi çalışıyor. Sadece (testler için) bir komut dosyasından kurup başlatmam gerekiyor ve parametreye hizmete geçmem gerekiyor.
sbi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.