Apakah ada cara cepat untuk, mengingat file yang dapat dieksekusi, membuat layanan Windows yang, ketika dimulai, meluncurkannya?
windows
windows-services
Latorre Jerman
sumber
sumber
Jawaban:
Untuk membuat Layanan Windows dari yang dapat dieksekusi, Anda dapat menggunakan
sc.exe
:Anda harus memiliki tanda kutip di sekitar
exe
jalur aktual , dan spasi setelah tanda kutipbinPath=
.Informasi lebih lanjut tentang
sc
perintah dapat ditemukan di Microsoft KB251192 .Perhatikan bahwa itu tidak akan berfungsi untuk sembarang executable: executable harus menjadi Layanan Windows ( yaitu mengimplementasikan ServiceMain ). Saat mendaftarkan non-layanan yang dapat dieksekusi sebagai layanan, Anda akan mendapatkan kesalahan berikut saat mencoba memulai layanan:
Ada alat yang dapat membuat Layanan Windows dari yang dapat dieksekusi, non-layanan yang dapat dieksekusi, lihat jawaban lain untuk contoh alat tersebut.
sumber
binpath=
dan harus mengelilingi jalan yang dapat dieksekusi dengan tanda kutip ganda benar-benar salah, setidaknya untuk windows 10. kutipan diperlukan jika dan hanya jika jalur berisi karakter khusus seperti spasi. juga, casing (huruf kecil / huruf besar / campuran) tidak masalah di mana pun, dalam nama variabel juga, dandisplayname="my service"
merupakan barang lain untuk meneruskan baris perintah sembari membuat layanan untuk dilihat sebagai baris pertama (Name
) padaservices.msc
.binPath=
diperlukan untuk saya pada Windows 7 tetapi tidak pada Windows 10Gunakan NSSM ( Manajer Layanan yang tidak mengisap ) untuk menjalankan .BAT atau file .EXE apa pun sebagai layanan.
http://nssm.cc/
nssm.exe install [serviceName]
sumber
Memperluas (Kevin Tong) jawaban.
Langkah 1: Unduh & Unzip nssm-2.24.zip
Langkah 2: Dari jenis baris perintah:
C:\> nssm.exe install [servicename]
itu akan membuka GUI seperti di bawah ini (contohnya adalah server UT2003), kemudian cukup browse ke: yourapplication.exe
Informasi lebih lanjut tentang: https://nssm.cc/usage
sumber
nssm.exe install [serviceName]
. Solusi ini berfungsi tetapi jika Anda memiliki Aplikasi GUI, itu tidak akan berfungsi pada Win Serever2003. Jika nanti Anda ingin menghapusnya, gunakannssm.exe remove [youservicename]
nginx
tidak perlu dan menyesatkan. Perintah itu akan bekerja tanpanya juga. Ini adalah parameter opsional jika Anda ingin memberikan nama layanan dari command prompt.Banyak jawaban yang ada termasuk intervensi manusia pada waktu pemasangan. Ini bisa menjadi proses yang rawan kesalahan. Jika Anda memiliki banyak file executable yang ingin diinstal sebagai layanan, hal terakhir yang ingin Anda lakukan adalah melakukannya secara manual pada waktu instalasi.
Menuju skenario yang dijelaskan di atas, saya membuat serman , alat baris perintah untuk menginstal executable sebagai layanan. Yang Anda butuhkan untuk menulis (dan hanya menulis sekali) adalah file konfigurasi layanan sederhana bersama dengan executable Anda. Lari
akan menginstal layanan.
stdout
danstderr
semuanya sudah login. Untuk info lebih lanjut, lihat situs web proyek .File konfigurasi yang berfungsi sangat sederhana, seperti yang ditunjukkan di bawah ini. Tetapi juga memiliki banyak fitur berguna seperti
<env>
dan di<persistent_env>
bawah ini.sumber
tambahan ini terbukti bermanfaat .. perlu dijalankan sebagai administrator
Jika nama layanan Anda memiliki spasi, lampirkan "tanda kutip".
sumber
sc create <service_name> binpath= <binary_path>
Saya sudah menguji produk yang bagus untuk itu: AlwaysUp . Tidak gratis tetapi mereka memiliki masa uji coba 30 hari sehingga Anda dapat mencobanya ...
sumber
Anda dapat memeriksa utilitas gratis kecil saya untuk layanan membuat \ edit \ hapus operasi. Berikut ini contoh pembuatannya:
Pergi ke Layanan -> Ubah -> Buat
File yang dapat dijalankan (google drive): [Unduh]
Kode sumber: [Unduh]
Posting blog: [BlogLink]
Kelas editor layanan: WinServiceUtils.cs
sumber