Ошибка SetupDiGetClassDevsEx: "Эта функция не поддерживается в этой системе". при использовании его против удаленного ПК
Я использую MSVC++ и SetupAPI(.h) и пытаюсь вызвать SetupDiGetClassDevsEx для целевого удаленного ПК, который завершается с ошибкой "Эта функция не поддерживается в этой системе". Важно отметить, что этот вызов (когда не указывается имя удаленного ПК) работает успешно (для моего ПК).
Мой фрагмент кода выглядит следующим образом:
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.
- Различные FQDN-варианты "TestPC", включая "\TestPC", "\TestPC.domain", "TestPC.domain", IP-адрес и т. Д.
- На целевом ПК я гарантировал, что он присоединен к домену и доступен для моего ПК, а также доступен через RDP. Я обеспечил, чтобы службы "Plug and Play" и "Удаленный реестр" были включены и работали, а также включили удаленное администрирование, полностью отключили UAC и гарантировали, что "Разрешить удаленный доступ к интерфейсу компьютера" в разделе "Конфигурация / Администрирование" Шаблоны / Система / Установка устройства "групповой политики включена.
- Я пытался получить доступ к той же системе, используя DevCon.exe (из средств Windows SDK), используя синтаксис "devcon.exe /m:\TestPC listclasses" (и другие), который просто возвращает "devcon fail".
- Я получил удаленный доступ к TestPC с помощью Device-Tool, который успешно работает, но использует WMI, а не Win32 SetupAPI, который я пытаюсь использовать.
Я упускаю что-то еще, что имеет решающее значение для использования этой функции? Или, возможно, это устарело и / или больше не работает, а MSDN не был обновлен для отражения изменений?