ฉันได้สร้างบริการ windows สำหรับเซิร์ฟเวอร์ Tomcat และมันทำงานได้ดี แต่ตอนนี้ฉันต้องการเปลี่ยนชื่อบริการโดยไม่ลบมัน
cmd \ GUI มีขั้นตอนใดบ้างในการเปลี่ยนชื่อบริการ
ฉันได้สร้างบริการ windows สำหรับเซิร์ฟเวอร์ Tomcat และมันทำงานได้ดี แต่ตอนนี้ฉันต้องการเปลี่ยนชื่อบริการโดยไม่ลบมัน
cmd \ GUI มีขั้นตอนใดบ้างในการเปลี่ยนชื่อบริการ
คำตอบ:
@ bfhd คำตอบจะใช้งานได้หากคุณต้องการเปลี่ยนชื่อที่แสดง (ซึ่งเป็นชื่อที่ปรากฏในรายการServices.msc
แต่ไม่ใช่ชื่อบริการ "ของจริง" (ซึ่งเป็นชื่อของคีย์รีจิสทรีที่มีข้อมูลบริการและใช้ใน API เช่นOpenService
) ส่วนข้อสังเกตของบทความ MSDN นี้จะพูดถึงชื่อบริการและชื่อที่แสดงอีกเล็กน้อย
น่าเสียดายที่ไม่มีวิธีที่เป็นทางการในการเปลี่ยนชื่อบริการ อย่างไรก็ตามอาจเป็นไปได้หากคุณต้องเปลี่ยนชื่อบริการแทนการติดตั้งใหม่ภายใต้ชื่อใหม่ด้วยเหตุผลบางประการ ทำดังต่อไปนี้:
regedit.exe
(ตัวแก้ไขรีจิสทรี)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
และค้นหาคีย์ย่อยด้วยชื่อบริการของคุณServices.exe
กระบวนการที่โฮสต์ตัวจัดการควบคุมบริการจะไม่เห็นการเปลี่ยนแปลงเว้นแต่คุณจะทำ ความพยายามที่จะเริ่มกระบวนการเปลี่ยนชื่อ (หรือมิฉะนั้นโต้ตอบกับมันเลยจริง ๆ ) จะล้มเหลวฉันไม่สัญญากับการทำงานนี้ มันอาจจะน่าลอง แต่ถ้าด้วยเหตุผลบางอย่างเพียงแค่ติดตั้งบริการภายใต้ชื่อใหม่เป็นที่ยอมรับไม่ได้
หากคุณต้องทำสิ่งนี้โดยทางโปรแกรมอาจมีฟังก์ชั่นRegRenameKey
ที่สามารถทำตามขั้นตอนที่สี่สำหรับคุณได้ ฉันอาจมีความเครียดเพราะเท่าที่ฉันสามารถบอกได้ฟังก์ชั่นนี้ไม่เป็นทางการโดยสิ้นเชิง มันไม่ได้อยู่ใน MSDN และมีข้อมูลเล็กน้อยเกี่ยวกับมัน สิ่งเดียวที่ฉันค้นพบนอกเหนือจากส่วนหัวของ Windows (ซึ่งมีต้นแบบและระบุว่าเป็นเฉพาะใน Vista - NT6.0 - และใหม่กว่า) เป็นโพสต์ในฟอรัม Sysinternalsซึ่งระบุว่าเรียกว่า syscall NT (เช่นไม่มีเอกสาร) ) ต้นแบบฟังก์ชั่นจากWinReg.h
คือ
WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
_In_ HKEY hKey,
_In_opt_ LPCWSTR lpSubKeyName,
_In_ LPCWSTR lpNewKeyName
);
โปรแกรมบรรทัดคำสั่งของ Windows เพื่อเปลี่ยนบริการคือ "sc"
นี่คือหน้าอ้างอิงของ Microsoft: https://technet.microsoft.com/en-us/library/bb490995.aspx
ในการเปลี่ยนชื่อที่แสดงของบริการคุณสามารถเรียกใช้:
sc config "Old service name" displayname= "New service name"
ในการเปลี่ยนปฏิบัติการที่คุณสามารถเรียกใช้:
sc config "Service name" binpath= "C:\path\to\executable\here"
สำหรับทั้งคำสั่งเหล่านั้นตรวจสอบให้แน่ใจว่าคุณมีช่องว่างระหว่าง = และชื่อใหม่ (เช่น. displayname= "New Name"
, NOT displayname="New Name"
)
[oldservicename]w.exe
ไดรฟ์ของคุณอยู่ อย่าลืมเปลี่ยนชื่อนั้น