出现“此系统不支持此功能”的SetupDiGetClassDevsEx错误。在远程PC上使用时

时间:2018-07-09 21:22:50

标签: c++ winapi visual-c++ windows-10 setupapi

我正在使用MSVC ++和SetupAPI(.h),并尝试针对远程PC调用SetupDiGetClassDevsEx,但失败并显示错误消息:“此系统不支持此功能。”重要的是要注意,此调用(不提供远程PC名称时)可以成功运行(定位到我自己的PC。)

我的代码段如下:

HDEVINFO hDevInfo;

hDevInfo = SetupDiGetClassDevsEx(
    0,       
    0,       
    0,       
    DIGCF_ALLCLASSES | DIGCF_PRESENT,
    0,
    L"TestPC",
    0
);

if (hDevInfo == INVALID_HANDLE_VALUE)
{
    wchar_t buffer[255];

    FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        GetLastError(),
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        buffer,
        255,
        NULL);
}

MSDN没有提及此方法已被弃用和/或不可用,但是我发现有矛盾的证据表明该方法在Windows 7中可用,但在8 / 8.1中不可用,然后也许/也许在Windows中不可用10。

我尝试了以下方法:

  • 确认我以本​​地管理员身份在TestPC上运行。
  • “ TestPC”的各种FQDN变体,包括“ \ TestPC”,“ \ TestPC.domain”,“ TestPC.domain”,IP地址等。
  • 在目标PC上,我已确保它已加入域并且对我自己的PC可见,并且可以通过RDP使用。我确保“即插即用”和“远程注册表”服务已启用并正在运行,并且已启用“远程管理”,完全禁用了UAC,并确保“配置/管理”下的“允许对计算机接口的远程访问”启用了“组策略的模板/系统/设备安装”。
  • 我尝试使用DevCon.exe(从Windows SDK工具中),使用“ devcon.exe / m:\ TestPC listclasses”语法(以及其他语法)访问同一系统,该语法仅返回“ devcon失败。 “
  • 我使用Device-Tool远程访问了TestPC,它可以成功运行,但是利用了WMI,而不是我要使用的Win32 SetupAPI。

我是否还缺少其他一些对于利用此功能至关重要的东西?或者,这是否可能已被弃用和/或不再起作用,并且MSDN尚未更新以反映更改?

0 个答案:

没有答案