Пример #1
0
        public static bool DoSyncWindowsLic()
        {
            try
            {
                Status.UpdateMessage(1, "Collecting Windows License Data");
                Network net;
                net = Utilities.ConnectNetwork(1);
                if (net == null)
                {
                    return(false);
                }
                Status.UpdateMessage(1, "Collecting Windows License Data");

                WindowsLic Lic = GetWindowsLicense();
                if (Lic == null)
                {
                    Status.UpdateMessage(1);
                    net.CloseConnection();
                    return(false);
                }

                Status.UpdateMessage(1, "Collecting Windows License Data (Sending data ...)");
                net.ReportWindowsLicData(Lic);

                net.CloseConnection();
            }
            catch (Exception ee)
            {
                Debug.WriteLine(ee.ToString());
                FoxEventLog.WriteEventLog("Servere error while syncing Windows License Status: " + ee.ToString(), EventLogEntryType.Error);
            }
            Status.UpdateMessage(1);
            return(true);
        }
Пример #2
0
        public RESTStatus GetWindowsLicData(SQLLib sql, object dummy, NetworkConnectionInfo ni, string id)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            if (string.IsNullOrWhiteSpace(id) == true)
            {
                ni.Error   = "Missing Data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            lock (ni.sqllock)
            {
                if (Computers.MachineExists(sql, id) == false)
                {
                    ni.Error   = "Invalid MachineID";
                    ni.ErrorID = ErrorFlags.InvalidValue;
                    return(RESTStatus.Fail);
                }
            }

            lock (ni.sqllock)
            {
                SqlDataReader dr = sql.ExecSQLReader("SELECT * FROM WindowsLic WHERE MachineID=@m",
                                                     new SQLParam("@m", id));
                if (dr.HasRows == false)
                {
                    dr.Close();
                    ni.Error   = "No Data";
                    ni.ErrorID = ErrorFlags.NoData;
                    return(RESTStatus.Fail);
                }

                WindowsLicData = new WindowsLic();
                dr.Read();

                WindowsLicData.Description          = Convert.ToString(dr["Description"]);
                WindowsLicData.GracePeriodRemaining = Convert.ToInt64(dr["GracePeriodRemaining"]);
                WindowsLicData.LicenseFamily        = Convert.ToString(dr["LicenseFamily"]);
                WindowsLicData.LicenseStatus        = Convert.ToInt64(dr["LicenseStatus"]);
                WindowsLicData.LicenseStatusText    = Convert.ToString(dr["LicenseStatusText"]);
                WindowsLicData.MachineID            = Convert.ToString(dr["MachineID"]);
                WindowsLicData.Name = Convert.ToString(dr["Name"]);
                WindowsLicData.PartialProductKey = Convert.ToString(dr["PartialProductKey"]);
                WindowsLicData.ProductKeyChannel = Convert.ToString(dr["ProductKeyChannel"]);
                WindowsLicData.ProductKeyID      = Convert.ToString(dr["ProductKeyID"]);
                WindowsLicData.ProductKeyID2     = Convert.ToString(dr["ProductKeyID2"]);
                WindowsLicData.Reported          = SQLLib.GetDTUTC(dr["Reported"]);

                dr.Close();
            }

            return(RESTStatus.Success);
        }
Пример #3
0
        public RESTStatus ReportWindowsLic(SQLLib sql, WindowsLic WinLic, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            WinLic.MachineID = ni.Username;
            WinLic.Reported  = DateTime.Now;

            lock (ni.sqllock)
            {
                if (Convert.ToInt32(sql.ExecSQLScalar("SELECT COUNT(*) FROM ComputerAccounts WHERE MachineID=@m",
                                                      new SQLParam("@m", WinLic.MachineID))) == 0)
                {
                    ni.Error   = "Invalid MachineID";
                    ni.ErrorID = ErrorFlags.InvalidValue;
                    return(RESTStatus.Fail);
                }
            }

            lock (ni.sqllock)
            {
                sql.ExecSQL("DELETE FROM WindowsLic WHERE MachineID=@m",
                            new SQLParam("@m", WinLic.MachineID));
            }

            if (NullTest.Test(WinLic) == false)
            {
                ni.Error   = "Invalid Data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            lock (ni.sqllock)
            {
                sql.InsertMultiData("WindowsLic",
                                    new SQLData("MachineID", WinLic.MachineID),
                                    new SQLData("Name", WinLic.Name),
                                    new SQLData("Description", WinLic.Description),
                                    new SQLData("GracePeriodRemaining", WinLic.GracePeriodRemaining),
                                    new SQLData("PartialProductKey", WinLic.PartialProductKey),
                                    new SQLData("ProductKeyID", WinLic.ProductKeyID),
                                    new SQLData("ProductKeyID2", WinLic.ProductKeyID2),
                                    new SQLData("LicenseFamily", WinLic.LicenseFamily),
                                    new SQLData("ProductKeyChannel", WinLic.ProductKeyChannel),
                                    new SQLData("LicenseStatus", WinLic.LicenseStatus),
                                    new SQLData("LicenseStatusText", WinLic.LicenseStatusText));
            }

            return(RESTStatus.Success);
        }
Пример #4
0
        private void ctlWindowsLicense_Load(object sender, EventArgs e)
        {
            PropertyGrid wlg = new PropertyGrid();

            wlg.HelpVisible = false;
            wlg.Dock        = DockStyle.Fill;
            WindowsLic winlic = Program.net.GetWindowsLicData(MID);

            if (winlic != null)
            {
                PWindowsLic winlictransformeddata = new PWindowsLic();
                ClassCopy.CopyClassData(winlic, winlictransformeddata);
                wlg.SelectedObject = winlictransformeddata;
            }
            this.Controls.Add(wlg);
        }
Пример #5
0
        static WindowsLic GetWindowsLicense()
        {
            WindowsLic lic = new WindowsLic();

            try
            {
                ManagementScope Scope;
                Scope = new ManagementScope("\\\\.\\root\\CIMV2", null);

                Scope.Connect();
                ObjectQuery        Query = new ObjectQuery("SELECT * FROM SoftwareLicensingProduct Where PartialProductKey<>null AND ApplicationId='55c92734-d682-4d71-983e-d6ec3f16059f' AND LicenseIsAddon=False");
                EnumerationOptions eo    = new EnumerationOptions();
                eo.Timeout = new TimeSpan(0, 0, 3, 0);
                ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Scope, Query, eo);

                foreach (ManagementObject WmiObject in Searcher.Get())
                {
                    lic.Name                 = (String)WmiObject["Name"];
                    lic.Description          = (String)WmiObject["Description"];
                    lic.GracePeriodRemaining = (UInt32)WmiObject["GracePeriodRemaining"];
                    lic.PartialProductKey    = (String)WmiObject["PartialProductKey"];
                    lic.ProductKeyID         = (String)WmiObject["ProductKeyID"];
                    try
                    {
                        lic.ProductKeyID2 = (String)WmiObject["ProductKeyID2"];
                    }
                    catch
                    {
                        lic.ProductKeyID2 = "";
                    }
                    lic.LicenseFamily = (String)WmiObject["LicenseFamily"];
                    try
                    {
                        lic.ProductKeyChannel = (String)WmiObject["ProductKeyChannel"];
                    }
                    catch
                    {
                        lic.ProductKeyChannel = "";
                    }
                    lic.LicenseStatus = (UInt32)WmiObject["LicenseStatus"];
                    switch ((UInt32)WmiObject["LicenseStatus"])
                    {
                    case 0:
                        lic.LicenseStatusText = "Unlicensed"; break;

                    case 1:
                        lic.LicenseStatusText = "Licensed"; break;

                    case 2:
                        lic.LicenseStatusText = "Out-Of-Box Grace Period"; break;

                    case 3:
                        lic.LicenseStatusText = "Out-Of-Tolerance Grace Period"; break;

                    case 4:
                        lic.LicenseStatusText = "On-Genuine Grace Period"; break;

                    case 5:
                        lic.LicenseStatusText = "Notification"; break;

                    default:
                        lic.LicenseStatusText = lic.LicenseStatus.ToString(); break;
                    }
                }
            }
            catch (ManagementException ee)
            {
                if (ee.ErrorCode == ManagementStatus.CallCanceled || ee.ErrorCode == ManagementStatus.Timedout)
                {
                    //drop message silently
                    Debug.WriteLine(ee.ToString());
                    return(null);
                }
                else
                {
                    Debug.WriteLine(ee.ToString());
                    FoxEventLog.WriteEventLog("Cannot get Windows License Info " + ee.ToString(), System.Diagnostics.EventLogEntryType.Error);
                    return(null);
                }
            }
            catch (Exception ee)
            {
                Debug.WriteLine(ee.ToString());
                FoxEventLog.WriteEventLog("Cannot get Windows License Info " + ee.ToString(), System.Diagnostics.EventLogEntryType.Error);
                return(null);
            }
            return(lic);
        }