2013-08-26 2 views
0

저는 C++로 윈도우 서비스를 작성했습니다. 완벽하게 작동합니다. 이제 설치하려고 할 때 먼저 이미 설치되어 있는지 확인할 수있는 기능을 추가하고 싶습니다.Windows 서비스가 설치되어 있는지 확인하십시오. (C++)

나는이 작업을 수행하는 방법에 대한 아이디어를 찾으려고했지만 거기에는별로 도움이되지 않습니다. 대부분의 quesions와 tutorials는 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.exe 또는 Powershell)으로이 정보를 쿼리하는 설치 프로그램을 실행할 수 있습니다.

관련 문제