我想使用C++獲取正在運行的服務的顯示名稱。我試圖使用GetServiceDisplayName函數,但它似乎並沒有工作,不知道爲什麼。如何獲取C++中的服務顯示名稱?
TTServiceBegin(const char *svcName, PFNSERVICE pfnService, bool *svc, PFNTERMINATE pfnTerm,
int flags, int argc, char *argv[], DWORD dynamiteThreadWaitTime)
{
SC_HANDLE serviceStatusHandle;
DWORD dwSizeNeeded = 0 ;
TCHAR* szKeyName = NULL ;
serviceStatusHandle=OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE ,SC_MANAGER_ALL_ACCESS);
GetServiceDisplayName(serviceStatusHandle,svcName, NULL, &dwSizeNeeded);
if(dwSizeNeeded)
{
szKeyName = new char[dwSizeNeeded+1];
ZeroMemory(szKeyName,dwSizeNeeded+1);
if(GetServiceDisplayName(serviceStatusHandle ,svcName,szKeyName,&dwSizeNeeded)!=0)
{
MessageBox(0,szKeyName,"Got the key name",0);
}
}
當我運行這段代碼,怎麼看都看szKeyName的價值在我的調試器,它進入的消息框,如果塊,但從來沒有顯示消息框。不知道爲什麼?
無論如何得到這個工作得到服務的顯示名稱或任何其他/更簡單的方式來完成這項任務?
但不應該它仍然出現,當我只是調試代碼?我不能讓它顯示,當我調試,甚至無法獲得szKeyName的值,即使當我看它它說它無法找到指定的符號 – Bullsfan127 2012-07-11 15:44:28
@ Bullsfan127,我不熟悉調試器,所以不能對此評論。我用''TermService''爲服務名嘗試了它,並正確顯示了一個包含'「終端服務」'的消息框。 – hmjd 2012-07-11 15:46:36