如何获取C++;Windows服务? 我有一个C++窗口服务,我想访问一个与服务的可执行文件相同的目录(通过系统函数)。我想这样做,我需要找到那个目录,这样我就可以引用目标可执行文件的路径。如何在代码中找到安装服务的目录?
您可以使用该功能。参见示例。视情况而定 如果它来自服务内部,则始终可以使用如何获取C++;Windows服务? 我有一个C++窗口服务,我想访问一个与服务的可执行文件相同的目录(通过系统函数)。我想这样做,我需要找到那个目录,这样我就可以引用目标可执行文件的路径。如何在代码中找到安装服务的目录?,c++,windows-services,C++,Windows Services,您可以使用该功能。参见示例。视情况而定 如果它来自服务内部,则始终可以使用GetModuleFileName,这将生成完全限定的路径 如果它来自另一个程序,那么由于它是服务,您可以检查服务的注册表信息。正如其他人所提到的,GetModuleFileName()可以完成该工作,但YMMV除外。最可靠的方法是从注册表项读取此信息,其中%ServiceName%是您的服务名称 使用C++查看注册表的一个例子。 祝你好运 您可以使用该功能。二进制文件的路径存储在QUERY\u SERVICE\u CON
GetModuleFileName
,这将生成完全限定的路径
如果它来自另一个程序,那么由于它是服务,您可以检查服务的注册表信息。正如其他人所提到的,
GetModuleFileName()
可以完成该工作,但YMMV除外。最可靠的方法是从注册表项读取此信息,其中%ServiceName%
是您的服务名称
使用C++查看注册表的一个例子。
祝你好运 您可以使用该功能。二进制文件的路径存储在QUERY\u SERVICE\u CONFIG结构的lpBinaryPathName字段中。澄清一下,您的意思是从正在运行的服务,而不是从其他任意应用程序,对吗?此函数实际上从注册表获取信息。但问题是你必须有一个服务句柄,我一点都不喜欢。服务名称应该足够了。@Vlad:如果您选择注册表路径,则需要注册表项的句柄。Windows API中的大多数内容都是通过句柄访问的。