2008-10-03 11 views
6

Arka plan çalışması yapan bir üçüncü taraf Uygulamam var, ancak tüm hataları ve iletileri konsola yazdırıyor. Bu, şu anda, bir sunucuda oturum açmış bir kullanıcı tutmamız ve her yeniden başlattığımızda uygulamayı (çift tıklama) yeniden başlatmamız gerektiği anlamına gelir.Bir CLI Uygulamasını Windows Hizmeti olarak nasıl çalıştırabilirim?

Çok çok havalı değil. stdout ve stderr için bir günlük dosyası ile yapılandırılabilir genel hizmet sarmalayıcı, -

Bunu yapmanın kolay bir yolu olduğunu, tür emindi.

svchost.exe, ancak yalnızca DLL dosyaları için olan according to this site'u kontrol ettim. Yazık.

DÜZENLEME: Uygulama bir toplu iş dosyasından başlatılmalıdır. ... piton kod < 10 hatlarında yapılabilir bir şey ... Oh şey, İşte icat edilmedi için FireDaemon hileye neden olabilir, ama bu biraz overkill olduğunu düşünüyorum

cevap

10

dışarı Kontrol srvany.exeResource Kit'dan. Bu, bir hizmeti bir şey olarak çalıştırmaya izin verecektir. Bu tuşlara kurmak eğer:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters] 
"Application"="C:\\Windows\\System32\\cmd.exe" 
"AppParameters"="/C C:\\My\\Batch\\Script.cmd" 
"AppDirectory"="C:\\My\\Batch" 

Not:

Öyle aşağıdaki gibi kayıt seting tarafından bir hizmet olarak bir toplu iş dosyası çalıştırabilir srvany.exe üzerinden yürütülebilir hizmet tanımında parametreleri geçirebilirsiniz Bir dosya kullanmak yerine RegEdit sadece değerlerde tek ters eğik çizgi gerekir.

1

FireDaemon'a göz atın. Bir seferde sadece 1 hizmetin yüklenmesine izin veren ücretsiz bir sürüm (FireDaemon lite) var, ancak bu, hizmetleri kurmak için çok kullanışlı bir araçtır. Gerekirse, toplu iş dosyalarını doğru şekilde sarar.

3
sadece çok ince hizmet sarmalayıcı uygulamıyor Neden

, burada NET'te bir hizmeti yazmak için bir hızlı başlangıç ​​kılavuzu var Writing a Useful Windows Service in .NET in Five Minutes

Eğer var olduğunu uygulamayı başlatmak ve böylece yapılandırmak için Process sınıfını kullanabilirsiniz çalışan stdout/stderr'i kendiniz halledebilirsiniz (arkadaşınız ProcessStartInfo).

0

Firedaemon seçeneğini çalıştırıyorum. Ayrıca, servisin cli çıkış penceresini görüntülemesine izin vermek için masaüstüyle etkileşime girmesine izin verme seçeneğini de ayarlayabilirsiniz. Artık ücretsiz bir sürüm sunmuyorlar, ancak web sitesi etrafında firedaemon lite için arama yaparsanız, eski ücretsiz lite versiyonunu bulabilir veya ödeme yoluna gidebilirsin.

4

NSSM: The Non-Sucking Service Manager'u öneririm.

  • 32/64-bit EXE'leri
  • Public Domain (!)
  • Düzgün hizmet durdurma mesajları uygular ve düzgün kapanmasına uygulamalarınıza uygun sinyal gönderir.
İlgili konular