Entfernen Sie die Windows-Geräteklasse in der Registrierung

642
radar101

Ich habe eine .INF mit der Sicherheitsbeschreibung HKR ,, Sicherheit "D: P (A ;; GA ;; SY) (A ;; GA ;; BA)".

Ich habe diese Sicherheitsbeschreibung geändert, um Administratorrechte zu entfernen. Damit kann jeder Benutzer die Anwendung öffnen. Es funktioniert jedoch nur, wenn ich die Geräteklasse und ClassGUID in der INF-Datei ändere.

Wie kann ich die Geräteklasse des zuvor installierten Treibers in Windows entfernen?

Ich denke, dass zuvor installierte Sicherheitsbeschreibungen nicht gelöscht werden, obwohl ich den Treiber aus dem Geräte-Manager gelöscht habe.

Ich kann die Sicherheitsbeschreibung nicht mit der geänderten INF-Datei überschreiben.

0

1 Antwort auf die Frage

0
radar101

Ich konnte die Geräteklasse schließlich mit einem kleinen C ++ - Programm deinstallieren. Im folgenden Link befindet sich am Ende der Site ein C ++ - Code, den Sie vollständig löschen können, einschließlich des mit ClassGUID verknüpften ClassName.

https://www.osronline.com/showthread.cfm?link=168171

Ich habe auch den gleichen Code unten kopiert. Ich habe eine kleine MFC-Anwendung erstellt, um die Deinstallation durchzuführen.

 HDEVINFO devs = INVALID_HANDLE_VALUE; SP_DEVINFO_LIST_DETAIL_DATA devInfoListDetail; SP_DEVINFO_DATA devInfo; unsigned int DeviceNo = 0; GUID cls; DWORD numClass = 0; TCHAR devID[MAX_DEVICE_ID_LEN]; SP_REMOVEDEVICE_PARAMS rmdParams; SetupDiClassGuidsFromNameEx ("ClassName", &cls, 1, &numClass, NULL, NULL); devs = SetupDiGetClassDevsEx (&cls, NULL, NULL, DIGCF_PRESENT, NULL, NULL, NULL); devInfo.cbSize = sizeof(devInfo); while (SetupDiEnumDeviceInfo (devs, DeviceNo++, &devInfo)) { devInfoListDetail.cbSize = sizeof(devInfoListDetail); if (!SetupDiGetDeviceInfoListDetail (devs, &devInfoListDetail) || CM_Get_Device_ID_Ex(devInfo.DevInst, devID, MAX_DEVICE_ID_LEN/* 200 */, 0, devInfoListDetail.RemoteMachineHandle)) { break; } rmdParams.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER); rmdParams.ClassInstallHeader.InstallFunction = DIF_REMOVE; rmdParams.Scope = DI_REMOVEDEVICE_GLOBAL; rmdParams.HwProfile = 0; SetupDiSetClassInstallParams (devs, &devInfo, &rmdParams.ClassInstallHeader,sizeof  (rmdParams)); SetupDiCallClassInstaller (DIF_REMOVE, devs, &devInfo); } SetupDiDestroyDeviceInfoList(devs); DEVINST devRoot; if(CM_Locate_DevNode_Ex(&devRoot,NULL,CM_LOCATE_DEVNODE_NORMAL,NULL) !=  CR_SUCCESS) { goto final; } CM_Reenumerate_DevNode_Ex(devRoot, 0, NULL); final: return; }