Я разрабатываю приложение, которое включает в себя установку некоторых аппаратных устройств для конкретного проекта. При установке приложения я использую difxAPI для загрузки файлов inf драйвера в хранилище драйверов. Но после удаления с использованием difx в реестре Windows остались некоторые ссылки в разделе HKLM \ SYSTEM \ CurrentControlSet \ Enum \ USB. Наличие этих ссылок, как правило, является проблемой, так как устройства перечисляются и показывают свою запись в разделе COM-портов диспетчера устройств. Вот что я использую для удаления драйверов:
DriverPackageUninstall(infName, DRIVER_PACKAGE_DELETE_FILES, ptrInstallerInfo, out fNeedReboot);
Снова я подумал о программной очистке этих записей реестра, поскольку, как я понимаю, мне следует установить разрешение на доступ к определенным ключам. Вот что я сделал:
RegistryAccessRule regAccess = new RegistryAccessRule("Everyone", RegistryRights.FullControl, AccessControlType.Allow);
RegistrySecurity regSecurity = new RegistrySecurity();
regSecurity.AddAccessRule(regAccess);
Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Enum\USB\", true).SetAccessControl(regSecurity);
Но этот фрагмент кода вызывает исключение, поскольку он не позволяет мне устанавливать контроль доступа программно. На компьютере с Windows XP вручную я могу установить это разрешение в редакторе реестра. Есть ли эффективный способ в XP, с помощью которого я могу полностью удалить файлы драйвера?