Sicherer Zugriff auf Registrierungsschlüssel
Kundenprobleme wurden häufig auf externe Komponenten wie Geräteinstallationsanwendungen von Drittanbietern zurückverfolgt, die folgende Aktionen ausführen:
Löschen Sie wichtige Registrierungsschlüssel.
Ändern Sie die Zugriffsberechtigungen für wichtige Registrierungsschlüssel.
Viele der Probleme, die mit externen Komponenten auftreten, werden durch die Verwendung der KEY_ALL_ACCESS-Zugriffsberechtigung für Registrierungsschlüssel verursacht. Ab Windows Server 2003 gewährt SetupDiCreateDevRegKey nur KEY_READ und KEY_WRITE Zugriffsberechtigungen und nicht KEY_ALL_ACCESS. Ab Windows Vista werden zusätzliche KEY_ALL_ACCESS Einschränkungen erzwungen.
Befolgen Sie die folgenden Richtlinien, um sicher auf Registrierungsschlüssel zuzugreifen:
Verwenden Sie nur die SetupAPI, Configuration Manager-Funktionen und andere unterstützte gerätebezogene APIs, um Geräteregistrierungsschlüssel zu öffnen, insbesondere die Hardwareschlüssel und Softwareschlüssel für ein Gerät.
Mit diesen Funktionen werden häufige Probleme behoben, die sich aus Einschränkungen für Zugriffsberechtigungen ergeben.
Der Speicherort und das Format von Registrierungsschlüsseln können sich zwischen verschiedenen Versionen von Windows ändern. Machen Sie keine Annahmen über den Speicherort, das Format oder die Bedeutung von Registrierungsschlüsseln oder Werten, die für die Geräte- und Treiberinstallation verwendet werden.
Weitere Informationen zu Registrierungsschlüsseln und -strukturen finden Sie unter Registrierungsstrukturen und Schlüssel für Geräte und Treiber.
Verwenden Sie die Registrierung nicht, um direkt auf die internen Einstellungen des Geräts zuzugreifen oder diese zu ändern.
Fordern Sie nur die minimalen Zugriffsberechtigungen an, die für jede Aufgabe erforderlich sind, z. B. die folgenden:
KEY_SET_VALUE
KEY_CREATE_SUB_KEY
KEY_QUERY_VALUE
KEY_ENUMERATE_SUB_KEYS
Öffnen Sie die Gerätesetupklassenschlüssel nicht direkt in der Registrierung. Wie bei jedem Registrierungsschlüssel können sich Der Speicherort und der Name der Gerätesetupklassenschlüssel zwischen Windows-Versionen ändern. Informationen zum ordnungsgemäßen Zugriff auf einen Gerätesetupklassenschlüssel finden Sie unter Öffnen von Registrierungsschlüsseln für eine Gerätesetupklasse.
Öffnen Sie geräteschnittstellenklassenschlüssel nicht direkt in der Registrierung. Wie bei jedem Registrierungsschlüssel können sich Speicherort und Name von Geräteschnittstellenklassenschlüsseln zwischen Windows-Versionen ändern.
Verwenden Sie zum sicheren Öffnen von Geräteschnittstellenklassenschlüsseln CM_Open_Class_Key mit Einstellung CM_OPEN_CLASS_KEY_INTERFACE im ulFlags-Parameter , oder verwenden Sie SetupDiOpenClassRegKeyEx , und legen Sie DIOCR_INSTALLER im Flags-Parameter fest.
Verwenden Sie nur INF-Anweisungen, um Registrierungsschlüssel zu ändern, die für die Verwendung durch das Betriebssystem reserviert sind. Weitere Informationen finden Sie unter Zusammenfassung der INF-Direktiven.
Klasseninstaller und Co-Installer können keine Registrierungsfunktionen aufrufen, um Registrierungswerte zu erstellen, zu ändern oder zu löschen, die für die Verwendung durch das Betriebssystem reserviert sind.
Weitere Informationen zu den Zugriffsberechtigungen von Registrierungsschlüsseln finden Sie unter Sicherheit und Zugriffsrechte für Registrierungsschlüssel.