我的桌面应用程序应该有不同的行为,具体取决于可选服务是否正在运行。我正在使用服务控制管理器检查服务是否已注册,如果是,则检查它是否正在运行。这很有效,直到我意识到这似乎要求桌面应用程序以管理员身份运行。
在我的桌面应用程序中检查这些条件(已注册和正在运行)的最佳方法是什么,而不需要管理权限?
答案 0 :(得分:1)
由于我对C#方面比较熟悉,我不确定是否有一个正式的API在C ++中执行此操作,不需要某种形式的提升权限。也就是说,我想到了几种替代方案。
HTH
答案 1 :(得分:1)
您无需管理员权限即可向SCM查询服务信息。
致电OpenSCManager()
请求SC_MANAGER_CONNECT
访问权限,然后致电OpenService()
请求SERVICE_QUERY_STATUS
访问权限。这将告诉您是否安装了服务。如果是,请调用QueryServiceStatus()
以确定它是否正在运行。