2013-08-26 58 views
0

我已經用C++編寫了一個windows服務,它完美的工作,現在我想添加一個功能,當我嘗試安裝它時,可以首先檢查它是否已經安裝或沒有?檢查是否安裝了Windows服務? (C++)

我試圖尋找如何完成這項任務的想法,但沒有太多的幫助。大多數問題和教程都是針對C#程序員的,他們正在使用ServiceController來完成他們的任務,但我無法在C++中訪問任何這樣的類。

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx

上面的鏈接沒有顯示出例如此類在示例部分,並說:

「無代碼的例子是當前可用的或這種語言可能不支持。」

其他信息: 我正在使用Windows 7 64位, Visual Studio 2008, 語言爲C++。

任何形式的幫助,高度讚賞。謝謝。

+0

我懷疑C++代碼與C#代碼會有很大的不同。嘗試查看C#示例,同時檢查C++中的方法和屬性。 –

+0

正如我所說的ServiceController不能在C++中訪問 –

+1

可能是有用的:http://stackoverflow.com/questions/9868904/check-if-a-services-is-installed-using-c – afree100

回答

3

更新:我在下面留下了答案,但實際上這是this的副本,我標記爲這樣。

您將使用OpenService Win32 API。它返回服務的句柄,或者NULL(如果有問題的服務不存在)(GetLastError()將返回ERROR_SERVICE_DOES_NOT_EXIST;還有其他錯誤原因,所以不要忘記檢查該句柄)。另外,如果通話成功,請不要忘記撥打CloseServiceHandle。這就是你提到的.NET類所使用的。

您還可以查看該信息Database of Installed Services, in the Windows Registry

或者,您可以運行external commands(例如sc.exePowershell)形成查詢此信息的安裝程序。

相關問題