มีวิธีที่รวดเร็วในการสร้างไฟล์ที่ปฏิบัติการได้หรือไม่สร้างบริการ Windows ที่เมื่อเริ่มต้นจะเปิดใช้งานหรือไม่
มีวิธีที่รวดเร็วในการสร้างไฟล์ที่ปฏิบัติการได้หรือไม่สร้างบริการ Windows ที่เมื่อเริ่มต้นจะเปิดใช้งานหรือไม่
คำตอบ:
ในการสร้างบริการ Windows จากการปฏิบัติการคุณสามารถใช้sc.exe
:
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
คุณต้องมีเครื่องหมายอัญประกาศรอบ ๆ ที่เกิดขึ้นจริงเส้นทางและพื้นที่หลังexe
binPath=
ข้อมูลเพิ่มเติมเกี่ยวกับsc
คำสั่งที่สามารถพบได้ใน Microsoft KB251192
โปรดทราบว่ามันจะไม่ทำงานสำหรับการปฏิบัติการใด ๆ : การปฏิบัติการต้องเป็นบริการของ Windows ( เช่นการใช้ ServiceMain ) เมื่อลงทะเบียนปฏิบัติการที่ไม่ใช่บริการเป็นบริการคุณจะได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามเริ่มบริการ:
ข้อผิดพลาด 1053: บริการไม่ตอบสนองต่อการร้องขอการเริ่มต้นหรือการควบคุมในเวลาที่เหมาะสม
มีเครื่องมือที่สามารถสร้างบริการ Windows จากโปรแกรมปฏิบัติการที่ไม่ได้ให้บริการและดูคำตอบอื่น ๆ สำหรับตัวอย่างของเครื่องมือดังกล่าว
binpath=
และต้องล้อมรอบพา ธ ที่ปฏิบัติการได้ด้วยเครื่องหมายอัญประกาศคู่นั้นผิดทั้งหมดอย่างน้อยสำหรับ windows 10 จำเป็นต้องมีการอ้างถึงถ้าหากพา ธ นั้นมีอักขระพิเศษเช่นช่องว่าง นอกจากนี้ยังมีท่อ (โลว์ / บน / กรณีผสม) ไม่ว่าที่ใดก็ได้ในชื่อตัวแปรมากเกินไปและdisplayname="my service"
เป็นของชำร่วยที่จะผ่านใน commandline ขณะที่การสร้างบริการไปยังมุมมองเป็นแถวแรกอื่น ( Name
) services.msc
ที่
binPath=
ที่ถูกต้องสำหรับผมใน Windows 7 แต่ไม่บน Windows 10
ใช้ NSSM ( non-Sucking Service Manager ) เพื่อเรียกใช้ไฟล์. BAT หรือไฟล์. EXE ใด ๆ เป็นบริการ
nssm.exe install [serviceName]
คำตอบที่ขยาย (Kevin Tong)
ขั้นตอนที่ 1:ดาวน์โหลด & Unzip nssm-2.24.zip
ขั้นตอนที่ 2:จากประเภทบรรทัดคำสั่ง:
C:\> nssm.exe install [servicename]
มันจะเปิด GUI ดังต่อไปนี้ (ตัวอย่างคือเซิร์ฟเวอร์ UT2003) จากนั้นเรียกดูได้ที่: yourapplication.exe
ข้อมูลเพิ่มเติมเกี่ยวกับ: https://nssm.cc/usage
nssm.exe install [serviceName]
ที่ถูกต้องไวยากรณ์ โซลูชันนี้ใช้งานได้ แต่หากคุณมีโปรแกรมประยุกต์ GUI จะไม่สามารถใช้งานได้ใน Win Serever2003 หากคุณต้องการลบออกในภายหลังให้ใช้nssm.exe remove [youservicename]
nginx
ไม่จำเป็นและทำให้เข้าใจผิด คำสั่งจะทำงานโดยไม่ได้เช่นกัน เป็นพารามิเตอร์ทางเลือกถ้าคุณต้องการระบุชื่อบริการจากพรอมต์คำสั่ง
คำตอบที่มีอยู่มากมายรวมถึงการแทรกแซงของมนุษย์ในเวลาติดตั้ง นี่อาจเป็นกระบวนการที่เกิดข้อผิดพลาดได้ง่าย หากคุณมีโปรแกรมเรียกทำงานจำนวนมากที่ต้องการติดตั้งเป็นบริการสิ่งสุดท้ายที่คุณต้องทำคือทำด้วยตนเองเมื่อทำการติดตั้ง
ในสถานการณ์ที่อธิบายไว้ข้างต้นฉันได้สร้างsermanเครื่องมือบรรทัดคำสั่งเพื่อติดตั้งโปรแกรมปฏิบัติการเป็นบริการ สิ่งที่คุณต้องเขียน (และเขียนเพียงครั้งเดียวเท่านั้น) คือไฟล์การกำหนดค่าบริการที่เรียบง่ายพร้อมกับปฏิบัติการของคุณ วิ่ง
serman install <path_to_config_file>
จะติดตั้งบริการ stdout
และstderr
ถูกบันทึกไว้ทั้งหมด สำหรับข้อมูลเพิ่มเติมโปรดดูที่การเว็บไซต์โครงการ
ไฟล์กำหนดค่าการทำงานนั้นง่ายมากดังที่แสดงด้านล่าง แต่มันก็มีคุณสมบัติที่มีประโยชน์มากมายเช่น<env>
และ<persistent_env>
ด้านล่าง
<service>
<id>hello</id>
<name>hello</name>
<description>This service runs the hello application</description>
<executable>node.exe</executable>
<!--
{{dir}} will be expanded to the containing directory of your
config file, which is normally where your executable locates
-->
<arguments>"{{dir}}\hello.js"</arguments>
<logmode>rotate</logmode>
<!-- OPTIONAL FEATURE:
NODE_ENV=production will be an environment variable
available to your application, but not visible outside
of your application
-->
<env name="NODE_ENV" value="production"/>
<!-- OPTIONAL FEATURE:
FOO_SERVICE_PORT=8989 will be persisted as an environment
variable to the system.
-->
<persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>
สิ่งพิเศษเหล่านี้พิสูจน์ว่ามีประโยชน์ .. จำเป็นต้องดำเนินการในฐานะผู้ดูแลระบบ
sc create <service_name> binpath=<binary_path>
sc stop <service_name>
sc queryex <service_name>
sc delete <service_name>
หากชื่อบริการของคุณมีช่องว่างให้ใส่ "เครื่องหมายคำพูด"
sc create <service_name> binpath= <binary_path>
คุณสามารถตรวจสอบยูทิลิตี้ฟรีเล็ก ๆ ของฉันสำหรับการดำเนินงาน create \ edit \ delete นี่คือตัวอย่างการสร้าง:
ไปที่บริการ -> แก้ไข -> สร้าง
ไฟล์ที่ปฏิบัติการได้ (google ไดรฟ์): [ดาวน์โหลด]
รหัสแหล่งที่มา: [ดาวน์โหลด]
บล็อกโพสต์: [BlogLink]
คลาสตัวแก้ไขบริการ: WinServiceUtils.cs