Saya memiliki Layanan Windows yang saya instal menggunakan InstallUtil.exe. Meskipun saya telah mengatur Metode Startup ke Otomatis, layanan tidak dimulai saat diinstal, saya harus membuka layanan secara manual dan mengklik mulai. Apakah ada cara untuk memulainya baik melalui baris perintah, atau melalui kode Layanan?
c#
windows-services
mickyjtwin
sumber
sumber
ServiceController
dalam menggunakan pernyataan.ServiceInstaller
variabel di kelas Anda. Kelas tersebut harus menerapkanSystem.Configuration.Install.Installer
. Lihat panduan msdn ini untuk informasi lebih lanjut.serviceInstaller
adalahServiceInstaller
objek yang dirujuk olehsender
dalam event handler, yang biasanya dipakai dalamServiceInstaller()
konstruktor. Oleh karena itu Anda dapat menambahkanServiceInstaller serviceInstaller = (ServiceInstaller)sender;
sebelumusing
pernyataan tersebut.Setelah sedikit refactoring, ini adalah contoh penginstal layanan windows lengkap dengan start otomatis:
sumber
Bagaimana jika mengikuti perintah?
sumber
Opsi terprogram untuk mengontrol layanan:
StartService
metode. Ini bagus untuk kasus di mana Anda harus dapat melakukan pemrosesan lain (mis. Untuk memilih layanan mana).Start-Service
melaluiRunspaceInvoke
atau dengan membuat milik Anda sendiriRunspace
dan menggunakanCreatePipeline
metodenya untuk mengeksekusi. Ini bagus untuk kasus di mana Anda perlu melakukan pemrosesan lain (misalnya untuk memilih layanan mana) dengan model pengkodean yang jauh lebih mudah daripada WMI, tetapi bergantung pada PSH yang diinstal.ServiceController
sumber
Anda dapat menggunakan baris perintah berikut untuk memulai layanan:
sumber
Gunakan ServiceController untuk memulai layanan Anda dari kode.
Memperbarui: Dan cara yang lebih benar untuk memulai layanan dari baris perintah adalah dengan menggunakan perintah "sc" ( Service Controller ) daripada "net".
sumber
Meskipun mengikuti jawaban yang diterima dengan tepat, saya masih tidak dapat memulai layanan - Saya malah diberi pesan kegagalan selama instalasi yang menyatakan bahwa layanan yang baru saja diinstal tidak dapat dimulai, karena tidak ada, meskipun menggunakan
this.serviceInstaller.ServiceName
agak daripada literal ...Saya akhirnya menemukan solusi alternatif yang menggunakan baris perintah:
sumber
Startup otomatis berarti bahwa layanan dimulai secara otomatis saat Windows dimulai. Seperti yang telah disebutkan orang lain, untuk memulainya dari konsol, Anda harus menggunakan ServiceController.
sumber
Anda bisa menggunakan
GetServices
metode kelas ServiceController untuk mendapatkan larik dari semua layanan. Kemudian, temukan layanan Anda dengan memeriksaServiceName
properti masing-masing layanan. Ketika Anda telah menemukan layanan Anda, panggilStart
metode untuk memulainya.Anda juga harus memeriksa
Status
properti untuk melihat keadaannya sebelum memanggil start (mungkin berjalan, dihentikan sementara, dihentikan, dll ..).sumber
Anda merusak desainer Anda. Tambahkan kembali Komponen Penginstal Anda. Ini harus memiliki serviceInstaller dan serviceProcessInstaller. ServiceInstaller dengan properti Metode Startup disetel ke Otomatis akan mulai saat diinstal dan setelah setiap boot ulang.
sumber
Sekadar catatan: Anda mungkin telah menyiapkan layanan Anda secara berbeda menggunakan antarmuka formulir untuk menambahkan penginstal layanan dan penginstal proyek. Dalam hal ini, ganti di mana dikatakan serviceInstaller.ServiceName dengan "nama dari desainer" .ServiceName.
Anda juga tidak membutuhkan anggota pribadi dalam kasus ini.
Terima kasih untuk bantuannya.
sumber