c # - Kontroller programmatisk, om Windows 7 er aktiveret

Indlæg af Hanne Mølgaard Plasc

Problem



Baggrund:
Jeg opretter systembilleder, som skal læses på flere arbejdsstationer. Windows aktivering sker, når billederne er indlæst på arbejdsstationen. Disse computere vil ikke blive tilsluttet til internettet og aktiveres over telefonen.


Spørgsmål:
Jeg vil gerne tjekke programmatisk, hvis Windows 7 er aktiveret eller ej, så vores software ikke kører, hvis Windows 7 ikke er aktiveret. Vores software er skrevet i C #.

Bedste reference


Software Licensing API - SLIAPI, tag på SLIsGenuineLocal(). (Erstatter LegitCheck) [4] [5] [6]

Andre referencer 1


Du kan køre 'Slmgr.vbs' på maskinen og derefter omdirigere output for at kontrollere.


System.Diagnostics.Process.Start(@"cscript Slmgr.vbs > D:\log.txt");


Dette vil returnere alle de oplysninger, du har brug for. Ikke den reneste måde at gøre det dog.

Andre referencer 2


Ikke sikker på om det gælder Win7, men jeg fandt et indlæg, der kontrollerer XP for aktivering ved hjælp af en Win32\_WindowsProductActivation klasse. [7] [8]


Jeg vil bygge en test en på min maskine (x64 Win7) og se om den vender tilbage eller ej, men giver i det mindste noget til at prøve i mellemtiden.


REDIGER (Jeg ønsker at læse docs) En kommentar på denne klasseside nævner, at denne klasse, på Win 7 og andre versioner) ser ud til at blive erstattet med Software Licensing Classes . Jeg vil se, om jeg kan få et arbejdsresultat. [9]

Andre referencer 3


Du kan kontrollere HKEY\_LOCAL\_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows Aktiveringsteknologier \ AdminObject \ Store \ TotalValidations og se om det er 1. Dette er muligvis ikke den definitive måde at bekræfte aktivering på, men du skal i det mindste være i stand til at se hvis den blev valideret.