gpt4 book ai didi

c++ - 如何以编程方式获取服务的状态(正在运行/已停止)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:12 28 4
gpt4 key购买 nike

我需要在我的 C++ 应用程序中获取 Windows“后台打印程序”服务的状态。

最佳答案

@shikarssj 提供的功能完美运行,加载服务时只需要管理员权限。

这是一个不要求完全许可的版本:

#include <Windows.h>

int GetServiceStatus( const char* name )
{
SC_HANDLE theService, scm;
SERVICE_STATUS m_SERVICE_STATUS;
SERVICE_STATUS_PROCESS ssStatus;
DWORD dwBytesNeeded;


scm = OpenSCManager( nullptr, nullptr, SC_MANAGER_ENUMERATE_SERVICE );
if( !scm ) {
return 0;
}

theService = OpenService( scm, name, SERVICE_QUERY_STATUS );
if( !theService ) {
CloseServiceHandle( scm );
return 0;
}

auto result = QueryServiceStatusEx( theService, SC_STATUS_PROCESS_INFO,
reinterpret_cast<LPBYTE>( &ssStatus ), sizeof( SERVICE_STATUS_PROCESS ),
&dwBytesNeeded );

CloseServiceHandle( theService );
CloseServiceHandle( scm );

if( result == 0 ) {
return 0;
}

return ssStatus.dwCurrentState;
}

关于c++ - 如何以编程方式获取服务的状态(正在运行/已停止),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7808085/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com