private void GetSystemSummary()
        {
            const UInt64 Size1KB = 0x400;
            const UInt64 Size1GB = 0x40000000;

            // check free/total RAM
            WmiUtils wmi = new WmiUtils("root\\cimv2");
            ManagementObjectCollection objOses = wmi.ExecuteQuery("SELECT * FROM Win32_OperatingSystem");

            foreach (ManagementObject objOs in objOses)
            {
                UInt64 freeRam  = Convert.ToUInt64(objOs["FreePhysicalMemory"]) / Size1KB;
                UInt64 totalRam = Convert.ToUInt64(objOs["TotalVisibleMemorySize"]) / Size1KB;

                // write to the registry
                RegistryUtils.SetRegistryKeyStringValue(RegistryOutputKey, RAM_SUMMARY_KEY,
                                                        String.Format("{0}:{1}", freeRam, totalRam));

                objOs.Dispose();
            }

            // check local HDD logical drives
            ManagementObjectCollection objDisks = wmi.ExecuteQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType = 3");
            StringBuilder sb    = new StringBuilder();
            bool          first = true;

            foreach (ManagementObject objDisk in objDisks)
            {
                if (!first)
                {
                    sb.Append(";");
                }

                sb.Append(objDisk["DeviceID"]);
                sb.Append(Convert.ToInt32(Convert.ToDouble(objDisk["FreeSpace"]) / (double)Size1GB)).Append(":");
                sb.Append(Convert.ToInt32(Convert.ToDouble(objDisk["Size"]) / (double)Size1GB));

                first = false;

                objDisk.Dispose();
            }

            // write HDD info
            RegistryUtils.SetRegistryKeyStringValue(RegistryOutputKey, HDD_SUMMARY_KEY, sb.ToString());

            // dispose resources
            objOses.Dispose();
            objDisks.Dispose();
        }
        private string GetAdministratorName()
        {
            WmiUtils wmi = new WmiUtils("root\\cimv2");
            ManagementObjectCollection objUsers = wmi.ExecuteQuery("Select * From Win32_UserAccount Where LocalAccount = TRUE");

            foreach (ManagementObject objUser in objUsers)
            {
                string sid = (string)objUser["SID"];
                if (sid != null && sid.StartsWith("S-1-5-") && sid.EndsWith("-500"))
                {
                    return((string)objUser["Name"]);
                }
            }

            return(null);
        }
 private void RebootSystem()
 {
     try
     {
         ServiceLog.WriteStart("RebootSystem");
         WmiUtils wmi = new WmiUtils("root\\cimv2");
         ManagementObjectCollection objOses = wmi.ExecuteQuery("SELECT * FROM Win32_OperatingSystem");
         foreach (ManagementObject objOs in objOses)
         {
             objOs.Scope.Options.EnablePrivileges = true;
             objOs.InvokeMethod("Reboot", null);
         }
         ServiceLog.WriteEnd("RebootSystem");
     }
     catch (Exception ex)
     {
         ServiceLog.WriteError("Reboot System error:", ex);
     }
 }
		private void RebootSystem()
		{
			try
			{
				ServiceLog.WriteStart("RebootSystem");
				WmiUtils wmi = new WmiUtils("root\\cimv2");
				ManagementObjectCollection objOses = wmi.ExecuteQuery("SELECT * FROM Win32_OperatingSystem");
				foreach (ManagementObject objOs in objOses)
				{
					objOs.Scope.Options.EnablePrivileges = true;
					objOs.InvokeMethod("Reboot", null);
				}
				ServiceLog.WriteEnd("RebootSystem");
			}
			catch (Exception ex)
			{
				ServiceLog.WriteError("Reboot System error:", ex);
			}
		}
        private void GetSystemSummary()
        {
            const UInt64 Size1KB = 0x400;
            const UInt64 Size1GB = 0x40000000;

            // check free/total RAM
            WmiUtils wmi = new WmiUtils("root\\cimv2");
            ManagementObjectCollection objOses = wmi.ExecuteQuery("SELECT * FROM Win32_OperatingSystem");
            foreach (ManagementObject objOs in objOses)
            {
                UInt64 freeRam = Convert.ToUInt64(objOs["FreePhysicalMemory"]) / Size1KB;
                UInt64 totalRam = Convert.ToUInt64(objOs["TotalVisibleMemorySize"]) / Size1KB;

                // write to the registry
                RegistryUtils.SetRegistryKeyStringValue(RegistryOutputKey, RAM_SUMMARY_KEY,
                    String.Format("{0}:{1}", freeRam, totalRam));

                objOs.Dispose();
            }

            // check local HDD logical drives
            ManagementObjectCollection objDisks = wmi.ExecuteQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType = 3");
            StringBuilder sb = new StringBuilder();
            bool first = true;
            foreach (ManagementObject objDisk in objDisks)
            {
                if(!first)
                    sb.Append(";");

                sb.Append(objDisk["DeviceID"]);
                sb.Append(Convert.ToInt32(Convert.ToDouble(objDisk["FreeSpace"]) / (double)Size1GB)).Append(":");
                sb.Append(Convert.ToInt32(Convert.ToDouble(objDisk["Size"]) / (double)Size1GB));

                first = false;

                objDisk.Dispose();
            }

            // write HDD info
            RegistryUtils.SetRegistryKeyStringValue(RegistryOutputKey, HDD_SUMMARY_KEY, sb.ToString());

            // dispose resources
            objOses.Dispose();
            objDisks.Dispose();
        }
        private string GetAdministratorName()
        {
            WmiUtils wmi = new WmiUtils("root\\cimv2");
            ManagementObjectCollection objUsers = wmi.ExecuteQuery("Select * From Win32_UserAccount Where LocalAccount = TRUE");

            foreach (ManagementObject objUser in objUsers)
            {
                string sid = (string)objUser["SID"];
                if (sid != null && sid.StartsWith("S-1-5-") && sid.EndsWith("-500"))
                    return (string)objUser["Name"];
            }

            return null;
        }
Example #7
0
        public ExecutionResult Run(ref ExecutionContext context)
        {
            ExecutionResult ret = new ExecutionResult();

            ret.ResultCode     = 0;
            ret.ErrorMessage   = null;
            ret.RebootRequired = false;

            context.ActivityDescription = "Configuring network adapter...";
            context.Progress            = 0;
            if (!CheckParameter(context, "MAC"))
            {
                ProcessError(context, ret, null, 2, "Parameter 'MAC' is not specified");
                return(ret);
            }
            string macAddress = context.Parameters["MAC"];

            if (!IsValidMACAddress(macAddress))
            {
                ProcessError(context, ret, null, 2, "Parameter 'MAC' has invalid format. It should be in 12:34:56:78:90:ab format.");
                return(ret);
            }

            string                     adapterId   = null;
            ManagementObject           objAdapter  = null;
            ManagementObjectCollection objAdapters = null;
            int attempts = 0;

            try
            {
                WmiUtils wmi   = new WmiUtils("root\\cimv2");
                string   query = string.Format("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress = '{0}' AND IPEnabled = True", macAddress);
                //try to find adapter for 10 times
                while (true)
                {
                    objAdapters = wmi.ExecuteQuery(query);

                    if (objAdapters.Count > 0)
                    {
                        foreach (ManagementObject adapter in objAdapters)
                        {
                            objAdapter = adapter;
                            adapterId  = (string)adapter["SettingID"];
                        }
                        break;
                    }
                    if (attempts > 9)
                    {
                        ProcessError(context, ret, null, 2, "Network adapter not found");
                        return(ret);
                    }

                    attempts++;
                    Log.WriteError(string.Format("Attempt #{0} to find network adapter (mac: {1}) failed!", attempts, macAddress));
                    // wait 1 min
                    System.Threading.Thread.Sleep(60000);
                    //repeat loop
                }
            }
            catch (Exception ex)
            {
                ProcessError(context, ret, ex, 2, "Network adapter configuration error: ");
                return(ret);
            }

            if (CheckParameter(context, "EnableDHCP", "True"))
            {
                try
                {
                    EnableDHCP(objAdapter);
                }
                catch (Exception ex)
                {
                    ProcessError(context, ret, ex, 2, "DHCP error: ");
                    return(ret);
                }
            }
            else if (CheckParameter(context, "EnableDHCP", "False"))
            {
                if (!CheckParameter(context, "DefaultIPGateway"))
                {
                    ProcessError(context, ret, null, 2, "Parameter 'DefaultIPGateway' is not specified");
                    return(ret);
                }
                if (!CheckParameter(context, "IPAddress"))
                {
                    ProcessError(context, ret, null, 2, "Parameter 'IPAddresses' is not specified");
                    return(ret);
                }
                if (!CheckParameter(context, "SubnetMask"))
                {
                    ProcessError(context, ret, null, 2, "Parameter 'SubnetMasks' is not specified");
                    return(ret);
                }
                try
                {
                    DisableDHCP(context, objAdapter);
                }
                catch (Exception ex)
                {
                    ProcessError(context, ret, ex, 2, "Network adapter configuration error: ");
                    return(ret);
                }
            }
            if (CheckParameter(context, "PreferredDNSServer"))
            {
                try
                {
                    SetDNSServer(context, objAdapter);
                }
                catch (Exception ex)
                {
                    ProcessError(context, ret, ex, 2, "DNS error: ");
                    return(ret);
                }
            }
            context.Progress = 100;
            return(ret);
        }
		public ExecutionResult Run(ref ExecutionContext context)
		{
			ExecutionResult ret = new ExecutionResult();
			ret.ResultCode = 0;
			ret.ErrorMessage = null;
			ret.RebootRequired = false;

			context.ActivityDescription = "Configuring network adapter...";
			context.Progress = 0;
			if (!CheckParameter(context, "MAC"))
			{
				ProcessError(context, ret, null, 2, "Parameter 'MAC' is not specified");
				return ret;
			}
			string macAddress = context.Parameters["MAC"];
			if (!IsValidMACAddress(macAddress))
			{
				ProcessError(context, ret, null, 2, "Parameter 'MAC' has invalid format. It should be in 12:34:56:78:90:ab format.");
				return ret;
			}
			
			string adapterId = null;
			ManagementObject objAdapter = null;
			ManagementObjectCollection objAdapters = null;
			int attempts = 0;
			try
			{
				WmiUtils wmi = new WmiUtils("root\\cimv2");
				string query = string.Format("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress = '{0}' AND IPEnabled = True", macAddress);
				//try to find adapter for 10 times
				while (true)
				{

					objAdapters = wmi.ExecuteQuery(query);

					if (objAdapters.Count > 0)
					{
						foreach (ManagementObject adapter in objAdapters)
						{
							objAdapter = adapter;
							adapterId = (string)adapter["SettingID"];
						}
						break;

					}
					if (attempts > 9)
					{
						ProcessError(context, ret, null, 2, "Network adapter not found");
						return ret;
					}
					
					attempts++;
                    Log.WriteError(string.Format("Attempt #{0} to find network adapter (mac: {1}) failed!", attempts, macAddress));
					// wait 1 min
					System.Threading.Thread.Sleep(60000);
					//repeat loop
				}
				
			}
			catch (Exception ex)
			{
				ProcessError(context, ret, ex, 2, "Network adapter configuration error: ");
				return ret;
			}

			if (CheckParameter(context, "EnableDHCP", "True"))
			{
				try
				{
					EnableDHCP(objAdapter);
				}
				catch (Exception ex)
				{
					ProcessError(context, ret, ex, 2, "DHCP error: ");
					return ret;
				}

			}
			else if (CheckParameter(context, "EnableDHCP", "False"))
			{
				if (!CheckParameter(context, "DefaultIPGateway"))
				{
					ProcessError(context, ret, null, 2, "Parameter 'DefaultIPGateway' is not specified");
					return ret;
				}
				if (!CheckParameter(context, "IPAddress"))
				{
					ProcessError(context, ret, null, 2, "Parameter 'IPAddresses' is not specified");
					return ret;
				}
				if (!CheckParameter(context, "SubnetMask"))
				{
					ProcessError(context, ret, null, 2, "Parameter 'SubnetMasks' is not specified");
					return ret;
				}
				try
				{
					DisableDHCP(context, objAdapter);
				}
				catch (Exception ex)
				{
					ProcessError(context, ret, ex, 2, "Network adapter configuration error: ");
					return ret;
				}
			}
			if (CheckParameter(context, "PreferredDNSServer"))
			{
				try
				{
					SetDNSServer(context, objAdapter);
				}
				catch (Exception ex)
				{
					ProcessError(context, ret, ex, 2, "DNS error: ");
					return ret;
				}

			}
			context.Progress = 100;
			return ret;
		}