如何得到NT服务可执行文件的所在路经?

ttoomm 2004-12-02 04:56:25
谢谢!
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzzqqq 2004-12-02
  • 打赏
  • 举报
回复
先用
GetServiceKeyName();
得到注册表对应该服务的健值信息。
再取该键的
"GetServiceKeyName"
值.
danyueer 2004-12-02
  • 打赏
  • 举报
回复
调用序列:
OpenService
QueryServiceConfig

例子:
VOID GetSampleServiceConfig()
{
LPQUERY_SERVICE_CONFIG lpqscBuf;
LPSERVICE_DESCRIPTION lpqscBuf2;
DWORD dwBytesNeeded;

// Open a handle to the service.

schService = OpenService(
schSCManager, // SCManager database
"Sample_Srv", // name of service
SERVICE_QUERY_CONFIG); // need QUERY access
if (schService == NULL)
MyErrorExit("OpenService");

// Allocate a buffer for the configuration information.

lpqscBuf = (LPQUERY_SERVICE_CONFIG) LocalAlloc(
LPTR, 4096);
if (lpqscBuf == NULL)
MyErrorExit("LocalAlloc");

lpqscBuf2 = (LPSERVICE_DESCRIPTION) LocalAlloc(
LPTR, 4096);
if (lpqscBuf2 == NULL)
MyErrorExit("LocalAlloc");

// Get the configuration information.

if (! QueryServiceConfig(
schService,
lpqscBuf,
4096,
&dwBytesNeeded) )
{
MyErrorExit("QueryServiceConfig");
}

if (! QueryServiceConfig2(
schService,
SERVICE_CONFIG_DESCRIPTION,
lpqscBuf2,
4096,
&dwBytesNeeded) )
{
MyErrorExit("QueryServiceConfig2");
}

// Print the configuration information.

printf("\nSample_Srv configuration: \n");
printf(" Type: 0x%x\n", lpqscBuf->dwServiceType);
printf(" Start Type: 0x%x\n", lpqscBuf->dwStartType);
printf(" Error Control: 0x%x\n", lpqscBuf->dwErrorControl);
printf(" Binary path: %s\n", lpqscBuf->lpBinaryPathName); // <<====== 注意!这里就是你要的!

if (lpqscBuf->lpLoadOrderGroup != NULL)
printf(" Load order group: %s\n", lpqscBuf->lpLoadOrderGroup);
if (lpqscBuf->dwTagId != 0)
printf(" Tag ID: %d\n", lpqscBuf->dwTagId);
if (lpqscBuf->lpDependencies != NULL)
printf(" Dependencies: %s\n", lpqscBuf->lpDependencies);
if (lpqscBuf->lpServiceStartName != NULL)
printf(" Start Name: %s\n", lpqscBuf->lpServiceStartName);
if (lpqscBuf2->lpDescription != NULL)
printf(" Description: %s\n", lpqscBuf2->lpDescription);

LocalFree(lpqscBuf);
LocalFree(lpqscBuf2);
}
DentistryDoctor 2004-12-02
  • 打赏
  • 举报
回复
一般来说可以在注册表里取得,多数服务都有一个ImagePath的键值。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧