Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Call the method like this:
- ActivationStatus OSLicenseStatus = WindowsActivationStatus()
- public static ActivationStatus WindowsActivationStatus()
- {
- ActivationStatus activation = new ActivationStatus();
- ConnectionOptions ConnOptions = GetConnectionOptions();
- SelectQuery mQuery = new SelectQuery("SELECT * FROM SoftwareLicensingProduct WHERE LicenseStatus = 1");
- EnumerationOptions mOptions = GetEnumerationOptions(false);
- ManagementScope mScope = new ManagementScope(@"\\" + Environment.MachineName + @"\root\CIMV2", ConnOptions);
- mScope.Connect();
- using (ManagementObjectSearcher moSearcher = new ManagementObjectSearcher(mScope, mQuery, mOptions))
- {
- foreach (ManagementObject moMonitor in moSearcher.Get())
- {
- activation.ApplicationID = moMonitor["ApplicationID"]?.ToString();
- activation.Description = moMonitor["Description"]?.ToString();
- activation.ID = moMonitor["ID"]?.ToString();
- activation.LicenseFamily = moMonitor["LicenseFamily"]?.ToString();
- activation.LicenseStatus = ((ActivationStatus.LicenseStatusValue)moMonitor["LicenseStatus"]).ToString();
- activation.OSName = moMonitor["Name"]?.ToString();
- activation.OfflineInstallationId = moMonitor["OfflineInstallationId"]?.ToString();
- activation.PartialProductKey = moMonitor["PartialProductKey"]?.ToString();
- activation.ProductKeyID = moMonitor["ProductKeyID"]?.ToString();
- activation.VolumeLicensetivationInterval = moMonitor["VLActivationInterval"]?.ToString();
- }
- }
- return activation;
- }
- public class ActivationStatus
- {
- public enum LicenseStatusValue : UInt32
- {
- Unlicensed = 0,
- Licensed,
- OutOfBoxGrace,
- OutOfToleanceGrace,
- NonGenuineGrace,
- Notification
- }
- public string ApplicationID { get; set; }
- public string Description { get; set; }
- public DateTime EvaluationEndDate { get; set; }
- public string ID { get; set; }
- public string LicenseFamily { get; set; }
- public string LicenseStatus { get; set; }
- public string OSName { get; set; }
- public string OfflineInstallationId { get; set; }
- public string PartialProductKey { get; set; }
- public string ProductKeyID { get; set; }
- public string VolumeLicensetivationInterval { get; set; }
- }
- private static EnumerationOptions GetEnumerationOptions(bool DeepScan)
- {
- EnumerationOptions mOptions = new EnumerationOptions()
- {
- Rewindable = false, //Forward only query => no caching
- ReturnImmediately = true, //Pseudo-async result
- DirectRead = true,
- EnumerateDeep = DeepScan
- };
- return mOptions;
- }
- private static ConnectionOptions GetConnectionOptions()
- {
- ConnectionOptions ConnOptions = new ConnectionOptions()
- {
- EnablePrivileges = true,
- Timeout = ManagementOptions.InfiniteTimeout,
- Authentication = AuthenticationLevel.PacketPrivacy,
- Impersonation = ImpersonationLevel.Impersonate,
- };
- return ConnOptions;
- }
Advertisement
Add Comment
Please, Sign In to add comment