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 参数指定 NULL。 该函数将失败,GetLastError 将返回 ERROR_INSUFFICIENT_BUFFERlpcchBuffer 参数将收到所需的大小。

[in, out] lpcchBuffer

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

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

返回值

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

如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError

言论

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

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

注意

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

要求

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

另请参阅

GetServiceDisplayName

OpenSCManager

Service Functions