SetupDiGetClassDevs() abhängig von Benutzerrechten ?
-
hDevInfoSet = SetupDiGetClassDevs(&GUID_DEVINTERFACE_COMPORT, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); //hDevInfoSet = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_PRESENT | DIGCF_ALLCLASSES); if (hDevInfoSet == INVALID_HANDLE_VALUE) { printf("SetupDiGetClassDevs Fehler: %i", GetLastError()); return; } while (bMoreItems) { ZeroMemory(&devInfo, sizeof(devInfo)); devInfo.cbSize = sizeof(SP_DEVINFO_DATA); bMoreItems = SetupDiEnumDeviceInfo(hDevInfoSet, nIndex, &devInfo); if (!bMoreItems) { printf(Message, "SetupDiEnumDeviceInfo Fehler: %i", GetLastError()); return; } ... nIndex++; }
Folgender Code benutze ich um aus einem COM Port Namen die entsprechende Treiber-Beschreibung zu bestimmen. Jedoch zeigte sich bei Benutzern mit niedrigen Rechten (Benutzergruppe Gast) das die Funktion SetupDiEnumDeviceInfo() immer den Fehlercode 259 zurücklieferte während sich bei Benutzern mit höheren Rechten kein Fehler zeigte.
Also habe ich mal SetupDiGetClassDevs() mit DIGCF_ALLCLASSES aufgerufen und der Fehler zeigte sich nicht mehr.
Was mache ich hier falsch ?
-
Da musst Du Dich vermutlich an den MS-Support wenden...