Dela via


Skapa säkra enhetsinstallationer

När du skapar ett drivrutinspaket måste du se till att installationen av enheten alltid utförs på ett säkert sätt. En säker enhetsinstallation är en som gör följande:

  • begränsar åtkomsten till enheten och dess enhetsgränssnittsklasser

  • begränsar åtkomsten till de drivrutinstjänster som skapades för enheten

  • skyddar drivrutinsfiler från ändring eller borttagning

  • begränsar åtkomsten till enhetens registerposter

  • begränsar åtkomsten till enhetens WMI-klasser

  • använder SetupAPI-funktioner korrekt

Enhetsinstallationssäkerhet styrs av säkerhetsbeskrivningar. Det primära mediet för att ange säkerhetsbeskrivningar är INF-filen. Systemet tillhandahåller standardsäkerhetsbeskrivningar och under de flesta omständigheter behöver du inte åsidosätta dessa beskrivningar.

Säkerhetsinställningar för enheter och gränssnitt

Systemet tillhandahåller standardsäkerhetsbeskrivningar för alla enhetsinstallationsklasser som tillhandahålls av systemet. I allmänhet tillåter dessa beskrivningar fullständig åtkomst för systemadministratörer och läs-/skriv-/körningsåtkomst för användare. (Säkerhetsbeskrivningarna som styr åtkomsten till en enhet styr också åtkomsten till enhetens enhetsgränssnittsklasser, om några.)

INF-filer för WDM-drivrutiner kan ange säkerhetsinställningar, antingen per klass eller per enhet, som åsidosätter systemets standardinställningar. Leverantörer som skapar en ny enhetskonfigurationsklass bör ange en säkerhetsbeskrivning för klassen. Vanligtvis är det inte nödvändigt att ange en enhetsspecifik säkerhetsbeskrivning. Det kan vara användbart att ange en enhetsspecifik säkerhetsbeskrivning om olika typer av enheter som tillhör samma klass har betydligt olika typer av användare.

Om du vill ange en säkerhetsbeskrivning för alla enheter som tillhör en WDM-enhetsinstallationsklass använder du ett INF AddReg-direktiv i ett INF ClassInstall32-avsnitt i klassinstallationsprogrammets INF-fil. AddReg-direktivet måste peka på ett tilläggsregisteravsnitt som anger värden för enhetstyp- och säkerhetsregisterposter. Dessa registervärden anger en säkerhetsbeskrivning för alla enheter av den angivna enhetstypen.

Om du vill ange en säkerhetsbeskrivning för en enskild enhet som tillhör en WDM-enhetsinstallationsklass använder du ett INF AddReg-direktiv i ett INF DDInstall.HW-avsnitt i enhetens INF-fil. AddReg-direktivet måste peka på ett tilläggsregisteravsnitt som anger värden för enhetstyp- och säkerhetsregisterposter. Dessa registervärden anger en säkerhetsbeskrivning för alla enheter som matchar maskinvaru-ID:t eller kompatibla ID: er som anges i ett associerat INF-modellavsnitt.

Som standard tillämpar systemet säkerhetsbeskrivningsuppsättningen för en enhet på en begäran om att öppna enhetsobjektet som representerar enheten (till exempel en begäran om att öppna den enhet vars NT-enhetsnamn är \Device\DeviceName).

Systemet tillämpar dock inte som standard den säkerhetsbeskrivning som angetts för en enhet på en begäran om att öppna ett objekt i enhetens namnområde, där enhetens namnområde innehåller alla objekt vars namn har formatet \Device\DeviceName\ObjectName. För att säkerställa att samma säkerhetsinställningar tillämpas på öppna begäranden för objekt i namnområdet för en enhet anger du flaggan FILE_DEVICE_SECURE_OPEN enhetsegenskaper för en enhet. Mer information om säker enhetsåtkomst finns i Kontrollera åtkomst till enhetsnamnområde (Windows-drivrutiner). Information om hur du ställer in flaggan FILE_DEVICE_SECURE_OPEN för enhetsegenskaper finns i Ange enhetsegenskaper (Windows-drivrutiner).

PnP-hanteraren anger säkerhetsvärden för enhetsobjekt när den anropar en drivrutins AddDevice-rutin . Vissa WDM-drivrutiner kan ange en enhetsspecifik säkerhetsbeskrivning när du skapar ett fysiskt enhetsobjekt (PDO) genom att anropa IoCreateDeviceSecure. Mer information finns i Skydda enhetsobjekt.

Säkerhetsinställningar för drivrutinsfiler

När du kopierar filer med hjälp av INF CopyFiles-direktivet är det möjligt att ange ett fillisteavsnitt. säkerhetsavsnitt . Det här avsnittet anger en säkerhetsbeskrivning för alla filer som kopieras av CopyFiles-direktivet . Leverantörer behöver dock aldrig ange en säkerhetsbeskrivning för drivrutinsfiler, om installationsmålet är en av systemunderkatalogerna för %SystemRoot%. (Mer information om dessa underkataloger finns i Använda Dirids.) Systemet tillhandahåller standardsäkerhetsbeskrivningar för dessa underkataloger och standardbeskrivningarna bör inte åsidosättas.

Säkerhetsinställningar för Driver Services

I inf-drivrutinsfilens service-install-section (se INF AddService Directive) kan du inkludera en säkerhetspost . Den här posten anger de behörigheter som krävs för att utföra sådana åtgärder som att starta, stoppa och konfigurera de drivrutinstjänster som är associerade med enheten. Systemet tillhandahåller dock en standardsäkerhetsbeskrivning för drivrutinstjänsterna, och den här standardbeskrivningen behöver vanligtvis inte åsidosättas.

Säkerhetsinställningar för enhets- och drivrutinsregisterposter

När du anger registerposter i INF-filer med hjälp av INF AddReg-direktiv kan du inkludera ett tilläggsregisteravsnitt. Säkerhetsavsnitt för varje tilläggsregisteravsnitt. Avsnittet add-registry-section.Säkerhet anger åtkomstbehörigheter till registerposterna som skapas av det associerade add-registry-section-avsnittet. Systemet tillhandahåller en standardsäkerhetsbeskrivning för alla registerposter som skapats under den relativa HKR-roten . Därför behöver du inte ange någon säkerhetsbeskrivning när du skapar registerposter under den relativa roten.

Säkerhetsinställningar för WMI-klasser

Systemet tilldelar standardsäkerhetsbeskrivningar till guid:erna som identifierar WMI-klasser. För Windows XP och tidigare operativsystemversioner ger standardsäkerhetsbeskrivningen för WMI GUID fullständig åtkomst till alla användare. Från och med Windows Server 2003 tillåter standardsäkerhetsbeskrivningen endast åtkomst till administratörer.

Om drivrutinen definierar WMI-klasser och du inte vill använda systemets standardsäkerhetsbeskrivningar för dessa klasser kan du ange säkerhetsbeskrivningar med hjälp av ett INF DDInstall.WMI-avsnitt i enhetens INF-fil.

Använda SetupAPI-funktioner korrekt

Om drivrutinspaketet innehåller installationsprogram, medinstallationsprogram eller andra installationsapplikationer som anropar SetupAPI-funktioner måste du följa riktlinjerna för att använda SetupAPI.

Testa säkerhetsinställningar för installation

Använd SetupAPI-loggning för att kontrollera att säkerhetsinställningar som är associerade med att installera enheten har angetts korrekt. Ange loggningsnivån till utförlig (0x0000FFFF) och försök sedan med olika installationsscenarier.

Sådana scenarier bör omfatta både inledande installationer och ominstallationer från både användarkonton och systemadministratörskonton. Prova att ansluta enheten innan du installerar programvara och vice versa.

Om installationen lyckas kan du visa loggen för att bekräfta att inga fel har inträffat. Om en installation misslyckas visar du loggen för att fastställa orsaken till felet.

När installationen är klar kan du dessutom göra följande:

  • Använd Registereditorn för att visa säkerhetsinställningarna som har tilldelats till en registerpost.

  • Använd Min dator för att visa säkerhetsinställningarna som har tilldelats till en fil.