
윈도우 서비스 관리자에서 서비스 이름을 얻을 수 있지만, 프로그램에서 자동으로 서비스 이름을 얻을 수 있는 방법이 있습니다.
1. SC_MANAGER_CONNECT 권한으로 서비스 관리자를 열어 서비스 목록을 가져옵니다.
2. SC_MANAGER_ENUMERATE_SERVICE 권한으로 서비스 목록에서 서비스 이름을 가져옵니다.
3. win32_service_openSCManager 함수를 사용하여 서비스 관리자를 열고, win32_service_enum_services 함수를 사용하여 서비스 목록을 가져옵니다.
4. win32_service_get_service_display_name 함수를 사용하여 서비스 이름을 가져옵니다.
예제 코드는 다음과 같습니다.
#hostingforum.kr
python
import win32serviceutil
import win32service
def get_service_name(service_name):
try:
service_handle = win32serviceutil.OpenService(None, service_name, win32service.SERVICE_QUERY_STATUS)
if service_handle:
return service_name
else:
return None
except Exception as e:
print(f"Error: {e}")
return None
def get_services():
services = []
try:
sc_manager_handle = win32serviceutil.OpenSCManager(None, None, win32service.SERVICE_MANAGER_CONNECT)
if sc_manager_handle:
services = win32serviceutil.EnumServicesStatus(sc_manager_handle)
win32serviceutil.CloseServiceHandle(sc_manager_handle)
return services
except Exception as e:
print(f"Error: {e}")
return []
def main():
services = get_services()
for service in services:
service_name = get_service_name(service[0])
if service_name:
print(f"Service Name: {service_name}")
if __name__ == "__main__":
main()
이 예제 코드는 서비스 관리자에서 서비스 이름을 자동으로 가져오는 방법을 보여줍니다.
2025-06-13 22:05