我正在開發一個應用程序,其中涉及安裝一些項目特定的硬件設備。在安裝應用程序時,我使用difxAPI將驅動程序inf文件壓入Driverstore。但在使用difx進行unintallation之後,在HKLM \ SYSTEM \ CurrentControlSet \ Enum \ USB下的Windows註冊表中仍有一些引用。這些引用的存在往往是一個問題,因爲設備被枚舉並顯示在設備管理器的COM端口部分中。這是我使用的卸載驅動程序:完全刪除Windows XP中的驅動程序文件
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中,我可以完全刪除驅動程序文件?