GetServiceKeyName 返回空的服务名称
GetServiceKeyName returns empty service name
我正在尝试使用以下代码在C++中使用 winapi 函数 GetServiceKeyName 从显示名称中获取服务名称:
SC_HANDLE hSCManager = OpenSCManager(NULL,
NULL, // service control manager database
SC_MANAGER_CONNECT | SC_MANAGER_ENUMERATE_SERVICE |SC_MANAGER_QUERY_LOCK_STATUS | STANDARD_RIGHTS_READ);
LPTSTR lpServiceName;
LPCTSTR lpDisplayName = L"My service";
DWORD dwSizeNeeded = sizeof(lpDisplayName);
GetServiceKeyName(hSCManager, lpDisplayName, lpServiceName, &dwSizeNeeded);
完成后,dwSizeNeed有15作为值,lpServiceName有"。我在哪里调用这个函数有误?这里需要什么特别的权利吗?这里的不便是这个应用程序没有管理员权限,所以我不能(我猜(设置SC_MANAGER_ALL_ACCESS。当然,我的服务已在系统中启动并运行,因此我的显示名称还不错。
需要修改两行:
...
TCHAR lpServiceName[512];
DWORD dwSizeNeeded = sizeof lpServcieName / sizeof lpServiceName[0]; // Number of elements in buffer
...
您还应该看到GetServiceKeyName
返回的内容,因为这是成功与否的信号。 仅当GetServiceKeyName
返回TRUE
时,检查字符串才有效。
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何获取std::result_of函数的返回类型
- QueryWorkingSet总是返回false
- (C++)分析树以计算返回错误值的简单算术表达式
- 访问者访问变体并返回不同类型时出错
- 如何返回一个类的两个对象相加的结果
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- lower_bound()返回最后一个元素
- GetServiceKeyName 返回空的服务名称
- Android Java 服务方法始终向 Qt Android 服务返回相同的值
- Web 服务将标志作为文本值返回 - 如何转换为枚举
- 从 mfc 应用程序点击网络服务,并希望从网络服务登录方法读取用户代码返回
- Windows服务安装返回错误1053
- QDbus:服务呼叫返回 QList<int>
- 如何在Thrift服务方法中返回多个值
- 使用OleCreateFromFile调用C#中的OLE返回0x800004016禁用使用需要DDE窗口的Ole1服务