getServiceKeyNameA 函数 (winsvc.h)

检索指定服务的服务名称。

语法

BOOL GetServiceKeyNameA(
  [in]            SC_HANDLE hSCManager,
  [in]            LPCSTR    lpDisplayName,
  [out, optional] LPSTR     lpServiceName,
  [in, out]       LPDWORD   lpcchBuffer
);

参数

[in] hSCManager

OpenSCManager 返回的计算机的服务控制管理器数据库的句柄。

[in] lpDisplayName

服务显示名称。 此字符串的最大长度为 256 个字符。

[out, optional] lpServiceName

指向接收服务名称的缓冲区的指针。 如果函数失败,此缓冲区将包含一个空字符串。

此数组的最大大小为 4K 字节。 若要确定所需的大小,请为此参数指定 NULL,为 lpcchBuffer 参数指定 0。 函数将失败, GetLastError 将返回 ERROR_INSUFFICIENT_BUFFERlpcchBuffer 参数将接收所需大小。

[in, out] lpcchBuffer

指向变量的指针,该变量指定 TCHARlpServiceName 参数指向的缓冲区的大小。 当函数返回时,此参数包含服务名称的大小(以 TCHAR 为单位),不包括 null 终止字符。

如果 lpServiceName 指向的缓冲区太小,无法包含服务名称,则函数不会在其中存储任何数据。 当函数返回时, lpcchBuffer 包含服务名称的大小,不包括 NULL 终止符。

返回值

如果函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

服务有两个名称:服务名称和显示名称。 服务名称是注册表中服务项的名称。 显示名称是显示在服务控制面板应用程序中的用户友好名称,与 NET START 命令一起使用。 这两个名称都是使用 CreateService 函数指定的,并且可以使用 ChangeServiceConfig 函数进行修改。 为服务指定的信息存储在与HKEY_LOCAL_MACHINESystem\CurrentControlSet\ ServicesServiceName 注册表项下\的服务名称同名\项中。

若要将服务名称映射到显示名称,请使用 GetServiceDisplayName 函数。 若要将显示名称映射到服务名称,请使用 GetServiceKeyName 函数。

注意

winsvc.h 标头将 GetServiceKeyName 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 winsvc.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

GetServiceDisplayName

OpenSCManager

服务函数