SORU
7 EYLÜL 2010, Salı


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
18 HAZİRAN 2012, PAZARTESİ


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 

(satır aralıkları okunabilirlik için eklenir, dahil)

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ı

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AFISHAL

    AFISHAL

    7 Mart 2009
  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • erikbjgn's channel

    erikbjgn's c

    12 Mayıs 2008