bağlam parametreleri geçirmek için nasıl sc.exe; bir hizmet oluşturma
Sc kullanarak ServiceName binPath= oluşturmak "yol", ne kadar bağımsız Yükleyici sınıfı Bağlam geçebilir.Parametreler koleksiyonu?
Sc.exe belgelere benim okuma bu tür iddialar sadece binPath sonunda geçmiş olabilir, ama bir örnek bulundu ya da başarılı bir şekilde bunu yapmak mümkün olmamıştır.
CEVAP
Oluşturulan hizmetler için parametreleri eğer komutu boşluklar veya tırnak işaretleri içeriyorsa, bazı tuhaf biçimlendirme sorunları, özellikle var:
Girmek istiyorsanızkomut satırı parametrelerihizmet için alınmalıdırtüm komut satırıtırnak içinde. (Ve her zaman mrswadge belirttiği gibi binPath=
ve ilk teklif önce,) sonra bir boşluk bırakın
Yani, bir hizmet oluşturmak için komut için PATH\COMMAND.EXE --param1=xyz
aşağıdaki binPath parametre kullanırsınız:
binPath= "PATH\COMMAND.EXE --param1=xyz"
^^ ^
|| |
space quote quote
Eğeryolyürütülebilirboşluk içerir, alınmalıdıryoltırnak içinde.
Bir komut içinher ikisi deparametreleriveboşluk içeren bir yol gerekiriç içe alıntılar. İç tırnak kaçmak için ters ile". \ ^/kbd>. Aynı ise bu parametreleri kendileri tırnak içeriyorsa, o da kaçmak gerekir tutar.
Kaçış karakteri olarak eğik çizgi kullanarak rağmen, normal ters yolda bulunan kaçış yok. Bu normalde, çıkış karakteri olarak eğik çizgi kullanın nasıl aykırıdır.
Yani bir komut gibi
"PATH WITH SPACES \COMMAND.EXE" --param-with-quotes="a b c" --param2
:
binPath= "\"PATH WITH SPACES \COMMAND.EXE\" --param-with-quotes=\"a b c\" --param2"
^ ^ ^ ^ ^ ^ ^
| | | | | | |
opening escaped regular escaped escaped closing
quote quote backslash closing quotes quote
for for in quote for for
whole path path for path parameter whole
command command
İşte tüm özel durumlar gösteren SVNserve belgelere, somut bir örnek:
sc create svnserve
binpath= "\"C:\Program Files\CollabNet Subversion Server\svnserve.exe\" --service -r \"C:\my repositories\" "
displayname= "Subversion Server" depend= Tcpip start= auto
Bu komut satırı "C:\Program Files\CollabNet Subversion Server\svnserve.exe" --service -r "C:\my repositories"
ile yeni bir hizmet eklemek istiyorum.
Özetle bu kadar
- her sc sonra parametre Alanı:
binpath=_
,displayname=_
depend=_
- boşluk içeren her sc parametre tırnak işaretleri içine alınması gerekir
- binpath içinde tüm ek teklif ters eğik çizgi ile kaçtı". \ ^/kbd>
- binpath içinde ters kaçtı
Nasıl bir toplu iş dosyası komut satır...
Nasıl İplik yöntemi ThreadStart parame...
Nasıl DbContext parametreleri geçirmek...
Nasıl anonim bir sınıf için parametrel...
bir görünüm parametreleri geçirmek içi...