获取有关计算机的独特信息,以便创建免费试用版

我知道有几种方法可以创建免费试用版。 我想到的算法如下:

  1. 得到一些标识安装应用程序的计算机的东西。 假设我选择获取可能类似于以下内容的Windows产品ID:00247-OEM-8992485-00078。

  2. 然后哈希那个字符串并说我最终得到了字符串:ckeer34kijr9f09uswcojskdfjsdk

  3. 然后使用随机字母和数字创建一个文件,如下所示:

    ksfjksdfjs98w73899wf89u289uf9289frmu2f98um98ry723tyr98re812y89897982433mc98lpokojiaytfwhjdegwdehjhdjwhbdwhdiwhd78ey8378er83r78rhy378wrgt37678er827yhe8162e682eg8gt66gt …..等等

  4. 然后在随机生成的文件中找到第二个数字(在这种情况下是8)也找到最后一个数字(在这种情况下它是6)现在乘以这些数字然后得到48:那么那将是我将要的位置开始把我得到的哈希字符串,如果你记得的话是:ckeer34kijr9f09uswcojskdfjsdk,所以文件的48个字符碰巧是’f’,所以用散列字符串的第一个字符c替换’f’。 所以将f替换为c。 然后将两个字符向右移动到50位并放置下一个哈希字符串字符等…

  5. 我还可以加密文件并解密它以便更安全。

  6. 每次用户打开程序时,检查该文件并查看它是否遵循算法。 如果它不遵循算法那么它意味着它不是完​​整版程序。

所以你可以看到我只需要获得一些关于计算机的独特信息。 我想到获得Windows产品密钥,我认为这将是独特的,但我不知道如何得到它。 我认为的另一件事是获取mac地址。 但我不认为这是有效的,因为如果用户更改它的尼卡,那么该程序将无法正常工作。 任何有关计算机的独特信息都会对我有所帮助。

我知道很多公司都使用MAC地址。 我不确定这种方法有什么优点和缺点,但值得研究。

我相信你可以使用这样的方法来获取MAC地址:

///  /// returns the mac address of the first operation nic found. ///  ///  private string GetMacAddress() { string macAddresses = ""; foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { if (nic.OperationalStatus == OperationalStatus.Up) { macAddresses += nic.GetPhysicalAddress().ToString(); break; } } return macAddresses; } 

这个SO问题详细讨论了: 在C#中获取机器MAC地址的可靠方法

编辑

正如其他人所指出的,MAC地址不能保证是唯一的。 在做了一些研究之后,还有其他一些选项可能会更好。 对我说的两个是:

  • 处理器序列号
  • 硬盘卷序列号(VSN)

获取处理器序列号:

 using System.Management; public string GetProcessorSerial() { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard"); ManagementObjectCollection managementObjects = searcher.Get(); foreach (ManagementObject obj in managementObjects) { if (obj["SerialNumber"] != null) return obj["SerialNumber"].Value.ToString(); } return String.Empty; } 

获取硬盘序列号:

 using System.Management; public string GetHDDSerial() { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); ManagementObjectCollection managementObjects = searcher.Get(); foreach (ManagementObject obj in managementObjects) { if (obj["SerialNumber"] != null) return obj["SerialNumber"].ToString(); } return string.Empty; } 

所描述的一切都很容易被一个愿意花一个小时来完成并编写“黑客”的人所绕过。

此外,Windows产品ID不是唯一的。 坦率地说,任何计算机都没有“唯一ID”。 ( 如何获取计算机的ID? )

我会说,保持简单。 只需创建一个加密日期/时间到期的注册密钥。 阅读每个程序启动时的密钥,以确定它何时到期。 是的,这和以前一样容易被黑客攻击。 但是,您不会花费大量时间来提出一个同样简单的超级复杂算法。

关键是,试用方法只是让诚实的人保持诚实。 那些打算窃取你的申请的人无论如何都会这样做。 所以不要浪费你的时间。

所有这些都说,我建议你甚至不要打扰。 同样,想要窃取你的应用的人会。 支付费用的人将继续支付。 而不是限时试用,将其更改为function受限的应用程序并将其丢弃。 如果人们想要其他function,他们可以支付并下载解锁版本。 此时,您可以为其提供某种类型的ID以放入安装程序。

如果你想要一台关于计算机的独特之处,那么你需要放在那里。

创建GUID或其他唯一值,对其进行加密,并将其存储在计算机和服务器上。

我在我的项目中使用了这段代码。 它读取硬盘的序列号:

 using System.Management; ... public string ReadHddSerial() { const string drive = "C"; ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\""); if (disk != null) { disk.Get(); return disk["VolumeSerialNumber"].ToString(); } return "other value (random ?)"; } 

例如,您可以组合此方法并读取MAC地址。

尝试组合计算机中的多个工件而不是一个工件。

Microsoft的Windows产品激活使用多个参数,如下所述:

http://www.aumha.org/win5/a/wpa.php

有很多东西可以识别计算机。 看一下这个!

 using System; using System.Linq; using System.Management; namespace MySystemInfo { public abstract class Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } protected static string GetWMI(Win32 win32) { string p = win32.GetType().GetProperty("property").GetValue(win32, null).ToString().Substring(1); ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM " + win32.Name); ManagementObjectCollection managementObjects = searcher.Get(); try { foreach (ManagementObject obj in managementObjects) { if (obj[p] != null) { var temp = obj[p]; return temp.ToString(); } } } catch { } return String.Empty; } } public class Win32_BaseBoard : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Caption, _CreationClassName, _Depth, _Description, _Height, _HostingBoard, _HotSwappable, _InstallDate, _Manufacturer, _Model, _Name, _OtherIdentifyingInfo, _PartNumber, _PoweredOn, _Product, _Removable, _Replaceable, _RequirementsDescription, _RequiresDaughterBoard, _SerialNumber, _SKU, _SlotLayout, _SpecialRequirements, _Status, _Tag, _Version, _Weight, _Width } public string GetInfo { get { return GetWMI(this); } } } public class Win32_Battery : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _BatteryRechargeTime, _BatteryStatus, _Caption, _Chemistry, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DesignCapacity, _DesignVoltage, _DeviceID, _ErrorCleared, _ErrorDescription, _EstimatedChargeRemaining, _EstimatedRunTime, _ExpectedBatteryLife, _ExpectedLife, _FullChargeCapacity, _InstallDate, _LastErrorCode, _MaxRechargeTime, _Name, _PNPDeviceID, _PowerManagementSupported, _SmartBatteryVersion, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _TimeOnBattery, _TimeToFullCharge } public string GetInfo { get { return GetWMI(this); } } } public class Win32_BIOS : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _BuildNumber, _Caption, _CodeSet, _CurrentLanguage, _Description, _IdentificationCode, _InstallableLanguages, _InstallDate, _LanguageEdition, _Manufacturer, _Name, _OtherTargetOS, _PrimaryBIOS, _ReleaseDate, _SerialNumber, _SMBIOSBIOSVersion, _SMBIOSMajorVersion, _SMBIOSMinorVersion, _SMBIOSPresent, _SoftwareElementID, _SoftwareElementState, _Status, _TargetOperatingSystem, _Version } public string GetInfo { get { return GetWMI(this); } } } public class Win32_Bus : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _BusNum, _BusType, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _InstallDate, _LastErrorCode, _Name, _PNPDeviceID, _PowerManagementSupported, _Status, _StatusInfo, _SystemCreationClassName, _SystemName } public string GetInfo { get { return GetWMI(this); } } } public class Win32_CDROMDrive : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Caption, _CompressionMethod, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _DefaultBlockSize, _Description, _DeviceID, _Drive, _DriveIntegrity, _ErrorCleared, _ErrorDescription, _ErrorMethodology, _FileSystemFlags, _FileSystemFlagsEx, _InstallDate, _LastErrorCode, _Manufacturer, _MaxBlockSize, _MaximumComponentLength, _MaxMediaSize, _MediaLoaded, _MediaType, _MfrAssignedRevisionLevel, _MinBlockSize, _Name, _NeedsCleaning, _NumberOfMediaSupported, _PNPDeviceID, _PowerManagementSupported, _RevisionLevel, _SCSIBus, _SCSILogicalUnit, _SCSIPort, _SCSITargetId, _SerialNumber, _Size, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _TransferRate, _VolumeName, _VolumeSerialNumber } public string GetInfo { get { return GetWMI(this); } } } public class Win32_DiskDrive : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _BytesPerSector, _Capabilities_, _CapabilityDescriptions_, _Caption, _CompressionMethod, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _DefaultBlockSize, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _ErrorMethodology, _FirmwareRevision, _Index, _InstallDate, _InterfaceType, _LastErrorCode, _Manufacturer, _MaxBlockSize, _MaxMediaSize, _MediaLoaded, _MediaType, _MinBlockSize, _Model, _Name, _NeedsCleaning, _NumberOfMediaSupported, _Partitions, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _SCSIBus, _SCSILogicalUnit, _SCSIPort, _SCSITargetId, _SectorsPerTrack, _SerialNumber, _Signature, _Size, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _TotalCylinders, _TotalHeads, _TotalSectors, _TotalTracks, _TracksPerCylinder } public string GetInfo { get { return GetWMI(this); } } } public class Win32_DMAChannel : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _16AddressSize, _16Availability, _BurstMode, _16ByteMode, _Caption, _16ChannelTiming, _CreationClassName, _CSCreationClassName, _CSName, _Description, _32DMAChannel, _InstallDate, _32MaxTransferSize, _Name, _32Port, _Status, _16TransferWidths_, _16TypeCTiming, _16WordMode } public string GetInfo { get { return GetWMI(this); } } } public class Win32_Fan : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _ActiveCooling, _Availability, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DesiredSpeed, _DeviceID, _ErrorCleared, _ErrorDescription, _InstallDate, _LastErrorCode, _Name, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _VariableSpeed } public string GetInfo { get { return GetWMI(this); } } } public class Win32_FloppyController : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _InstallDate, _LastErrorCode, _Manufacturer, _MaxNumberControlled, _Name, _PNPDeviceID, _PowerManagementSupported, _ProtocolSupported, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _TimeOfLastReset } public string GetInfo { get { return GetWMI(this); } } } public class Win32_FloppyDrive : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Caption, _CompressionMethod, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _DefaultBlockSize, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _ErrorMethodology, _InstallDate, _LastErrorCode, _Manufacturer, _MaxBlockSize, _MaxMediaSize, _MinBlockSize, _Name, _NeedsCleaning, _NumberOfMediaSupported, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _Status, _StatusInfo, _SystemCreationClassName, _SystemName } public string GetInfo { get { return GetWMI(this); } } } public class Win32_IDEController : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _InstallDate, _LastErrorCode, _Manufacturer, _MaxNumberControlled, _Name, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _ProtocolSupported, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _TimeOfLastReset } public string GetInfo { get { return GetWMI(this); } } } public class Win32_IRQResource : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Caption, _CreationClassName, _CSCreationClassName, _CSName, _Description, _Hardware, _InstallDate, _IRQNumber, _Name, _Shareable, _Status, _TriggerLevel, _TriggerType, _Vector } public string GetInfo { get { return GetWMI(this); } } } public class Win32_Keyboard : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _InstallDate, _IsLocked, _LastErrorCode, _Layout, _Name, _NumberOfFunctionKeys, _Password, _PNPDeviceID, _PowerManagementSupported, _Status, _StatusInfo, _SystemCreationClassName, _SystemName } public string GetInfo { get { return GetWMI(this); } } } public class Win32_MemoryDevice : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Access, _AdditionalErrorData_, _Availability, _BlockSize, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CorrectableError, _CreationClassName, _Description, _DeviceID, _EndingAddress, _ErrorAccess, _ErrorAddress, _ErrorCleared, _ErrorDataOrder, _ErrorDescription, _ErrorGranularity, _ErrorInfo, _ErrorMethodology, _ErrorResolution, _ErrorTime, _ErrorTransferSize, _InstallDate, _LastErrorCode, _Name, _NumberOfBlocks, _OtherErrorDescription, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _Purpose, _StartingAddress, _Status, _StatusInfo, _SystemCreationClassName, _SystemLevelAddress, _SystemName } public string GetInfo { get { return GetWMI(this); } } } public class Win32_NetworkAdapter : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _AdapterType, _AdapterTypeID, _AutoSense, _Availability, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _GUID, _Index, _InstallDate, _Installed, _InterfaceIndex, _LastErrorCode, _MACAddress, _Manufacturer, _MaxNumberControlled, _MaxSpeed, _Name, _NetConnectionID, _NetConnectionStatus, _NetEnabled, _NetworkAddresses_, _PermanentAddress, _PhysicalAdapter, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _ProductName, _ServiceName, _Speed, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _TimeOfLastReset } public string GetInfo { get { return GetWMI(this); } } } public class Win32_NetworkAdapterConfiguration : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _ArpAlwaysSourceRoute, _ArpUseEtherSNAP, _Caption, _DatabasePath, _DeadGWDetectEnabled, _DefaultIPGateway_, _DefaultTOS, _DefaultTTL, _Description, _DHCPEnabled, _DHCPLeaseExpires, _DHCPLeaseObtained, _DHCPServer, _DNSDomain, _DNSDomainSuffixSearchOrder_, _DNSEnabledForWINSResolution, _DNSHostName, _DNSServerSearchOrder_, _DomainDNSRegistrationEnabled, _ForwardBufferMemory, _FullDNSRegistrationEnabled, _GatewayCostMetric_, _IGMPLevel, _Index, _InterfaceIndex, _IPAddress_, _IPConnectionMetric, _IPEnabled, _IPFilterSecurityEnabled, _IPPortSecurityEnabled, _IPSecPermitIPProtocols_, _IPSecPermitTCPPorts_, _IPSecPermitUDPPorts_, _IPSubnet_, _IPUseZeroBroadcast, _IPXAddress, _IPXEnabled, _IPXFrameType_, _IPXMediaType, _IPXNetworkNumber_, _IPXVirtualNetNumber, _KeepAliveInterval, _KeepAliveTime, _MACAddress, _MTU, _NumForwardPackets, _PMTUBHDetectEnabled, _PMTUDiscoveryEnabled, _ServiceName, _SettingID, _TcpipNetbiosOptions, _TcpMaxConnectRetransmissions, _TcpMaxDataRetransmissions, _TcpNumConnections, _TcpUseRFC1122UrgentPointer, _TcpWindowSize, _WINSEnableLMHostsLookup, _WINSHostLookupFile, _WINSPrimaryServer, _WINSScopeID, _WINSSecondaryServer } public string GetInfo { get { return GetWMI(this); } } } } 

现在,如果我想说我想获得主板的序列号,例如intelesence,我会做类似的事情:

  var b = new MySystemInfo.Win32_BaseBoard(); b.property = Win32_BaseBoard.Property._SerialNumber; MessageBox.Show("this computer BaseBoard serial number is: " + b.GetInfo); 

在此处输入图像描述

关于这一点的好处是视觉工作室的智慧:

在此处输入图像描述

在那张照片上,我刚刚向您展示了我可以对基板进行检索的可用内容,但是看看您可能想要获得的所有内容:

在此处输入图像描述

也许你们不需要这个来创建免费试用版,但它是一件好事。 希望你喜欢

非常感谢你的帮助……所以基于你所有的答案,我想到了以下几点:

所以确实没有关于计算机的特定部分来识别它。 但确实有些部分经常不会改变,如主板信息,nic卡等……所以我的新算法如下:

1)使用户必须创建一个帐户并将其电子邮件和密码保存在我的服务器上。

2)获取用户MainBoard信息并使用我之前显示的相同算法创建文件。

3)获取用户的mac地址,如果它有明显的NIC卡,并使用我之前显示的相同算法创建另一个文件。

3)获取用户的cpu ID并做同样的事情。

4)也许得到另一件事,目前这个用户可能是硬件序列之类的东西。

5)当程序启动时检查是否至少有一个文件遵循算法。 我的意思是有人改变主板,网卡,cpu等的几率……如果确实发生了这种情况,那么就要求用户上线才能通过服务器进行身份validation。 换句话说,用户可以更改它的nic卡,程序仍然会启动,因为cpu serial的文件仍然遵循算法。

我无法在之前的问题上添加这么多字符。 将这些额外的类添加到我最近发布的MySystemInfo命名空间中:

 public class Win32_OnBoardDevice : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Caption, _CreationClassName, _Description, _DeviceType, _Enabled, _HotSwappable, _InstallDate, _Manufacturer, _Model, _Name, _OtherIdentifyingInfo, _PartNumber, _PoweredOn, _Removable, _Replaceable, _SerialNumber, _SKU, _Status, _Tag, _Version } public string GetInfo { get { return GetWMI(this); } } } public class Win32_ParallelPort : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Capabilities_, _CapabilityDescriptions_, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DeviceID, _DMASupport, _ErrorCleared, _ErrorDescription, _InstallDate, _LastErrorCode, _MaxNumberControlled, _Name, _OSAutoDiscovered, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _ProtocolSupported, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _TimeOfLastReset } public string GetInfo { get { return GetWMI(this); } } } public class Win32_PhysicalMedia : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Caption, _Description, _InstallDate, _Name, _Status, _CreationClassName, _Manufacturer, _Model, _SKU, _SerialNumber, _Tag, _Version, _PartNumber, _OtherIdentifyingInfo, _PoweredOn, _Removable, _Replaceable, _HotSwappable, _Capacity, _MediaType, _MediaDescription, _WriteProtectOn, _CleanerMedia } public string GetInfo { get { return GetWMI(this); } } } public class Win32_PhysicalMemory : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _BankLabel, _Capacity, _Caption, _CreationClassName, _DataWidth, _Description, _DeviceLocator, _FormFactor, _HotSwappable, _InstallDate, _InterleaveDataDepth, _InterleavePosition, _Manufacturer, _MemoryType, _Model, _Name, _OtherIdentifyingInfo, _PartNumber, _PositionInRow, _PoweredOn, _Removable, _Replaceable, _SerialNumber, _SKU, _Speed, _Status, _Tag, _TotalWidth, _TypeDetail, _Version } public string GetInfo { get { return GetWMI(this); } } } public class Win32_PortResource : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Alias, _Caption, _CreationClassName, _CSCreationClassName, _CSName, _Description, _EndingAddress, _InstallDate, _Name, _StartingAddress, _Status } public string GetInfo { get { return GetWMI(this); } } } public class Win32_Processor : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _AddressWidth, _Architecture, _Availability, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CpuStatus, _CreationClassName, _CurrentClockSpeed, _CurrentVoltage, _DataWidth, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _ExtClock, _Family, _InstallDate, _L2CacheSize, _L2CacheSpeed, _L3CacheSize, _L3CacheSpeed, _LastErrorCode, _Level, _LoadPercentage, _Manufacturer, _MaxClockSpeed, _Name, _NumberOfCores, _NumberOfLogicalProcessors, _OtherFamilyDescription, _PNPDeviceID, _PowerManagementSupported, _ProcessorId, _ProcessorType, _Revision, _Role, _SocketDesignation, _Status, _StatusInfo, _Stepping, _SystemCreationClassName, _SystemName, _UniqueId, _UpgradeMethod, _Version, _VoltageCaps } public string GetInfo { get { return GetWMI(this); } } } public class Win32_SerialPort : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Binary, _Capabilities_, _CapabilityDescriptions_, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _InstallDate, _LastErrorCode, _MaxBaudRate, _MaximumInputBufferSize, _MaximumOutputBufferSize, _MaxNumberControlled, _Name, _OSAutoDiscovered, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _ProtocolSupported, _ProviderType, _SettableBaudRate, _SettableDataBits, _SettableFlowControl, _SettableParity, _SettableParityCheck, _SettableRLSD, _SettableStopBits, _Status, _StatusInfo, _Supports16BitMode, _SupportsDTRDSR, _SupportsElapsedTimeouts, _SupportsIntTimeouts, _SupportsParityCheck, _SupportsRLSD, _SupportsRTSCTS, _SupportsSpecialCharacters, _SupportsXOnXOff, _SupportsXOnXOffSet, _SystemCreationClassName, _SystemName, _TimeOfLastReset } public string GetInfo { get { return GetWMI(this); } } } public class Win32_SoundDevice : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DeviceID, _DMABufferSize, _ErrorCleared, _ErrorDescription, _InstallDate, _LastErrorCode, _Manufacturer, _MPU401Address, _Name, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _ProductName, _Status, _StatusInfo, _SystemCreationClassName, _SystemName } public string GetInfo { get { return GetWMI(this); } } } public class Win32_SystemEnclosure : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _AudibleAlarm, _BreachDescription, _CableManagementStrategy, _Caption, _ChassisTypes_, _CreationClassName, _CurrentRequiredOrProduced, _Depth, _Description, _HeatGeneration, _Height, _HotSwappable, _InstallDate, _LockPresent, _Manufacturer, _Model, _Name, _NumberOfPowerCords, _OtherIdentifyingInfo, _PartNumber, _PoweredOn, _Removable, _Replaceable, _SecurityBreach, _SecurityStatus, _SerialNumber, _ServiceDescriptions_, _ServicePhilosophy_, _SKU, _SMBIOSAssetTag, _Status, _Tag, _TypeDescriptions_, _Version, _VisibleAlarm, _Weight, _Width } public string GetInfo { get { return GetWMI(this); } } } public class Win32_TapeDrive : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Capabilities_, _CapabilityDescriptions_, _Caption, _Compression, _CompressionMethod, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _DefaultBlockSize, _Description, _DeviceID, _ECC, _EOTWarningZoneSize, _ErrorCleared, _ErrorDescription, _ErrorMethodology, _FeaturesHigh, _FeaturesLow, _Id, _InstallDate, _LastErrorCode, _Manufacturer, _MaxBlockSize, _MaxMediaSize, _MaxPartitionCount, _MediaType, _MinBlockSize, _Name, _NeedsCleaning, _NumberOfMediaSupported, _Padding, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _ReportSetMarks, _Status, _StatusInfo, _SystemCreationClassName, _SystemName } public string GetInfo { get { return GetWMI(this); } } } public class Win32_TemperatureProbe : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Accuracy, _Availability, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _CurrentReading, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _InstallDate, _IsLinear, _LastErrorCode, _LowerThresholdCritical, _LowerThresholdFatal, _LowerThresholdNonCritical, _MaxReadable, _MinReadable, _Name, _NominalReading, _NormalMax, _NormalMin, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _Resolution, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _Tolerance, _UpperThresholdCritical, _UpperThresholdFatal, _UpperThresholdNonCritical } public string GetInfo { get { return GetWMI(this); } } } public class Win32_UninterruptiblePowerSupply : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _ActiveInputVoltage, _Availability, _BatteryInstalled, _CanTurnOffRemotely, _Caption, _CommandFile, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _EstimatedChargeRemaining, _EstimatedRunTime, _FirstMessageDelay, _InstallDate, _IsSwitchingSupply, _LastErrorCode, _LowBatterySignal, _MessageInterval, _Name, _PNPDeviceID, _PowerFailSignal, _PowerManagementCapabilities_, _PowerManagementSupported, _Range1InputFrequencyHigh, _Range1InputFrequencyLow, _Range1InputVoltageHigh, _Range1InputVoltageLow, _Range2InputFrequencyHigh, _Range2InputFrequencyLow, _Range2InputVoltageHigh, _Range2InputVoltageLow, _RemainingCapacityStatus, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _TimeOnBackup, _TotalOutputPower, _TypeOfRangeSwitching, _UPSPort } public string GetInfo { get { return GetWMI(this); } } } public class Win32_USBController : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _InstallDate, _LastErrorCode, _Manufacturer, _MaxNumberControlled, _Name, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _ProtocolSupported, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _TimeOfLastReset } public string GetInfo { get { return GetWMI(this); } } } public class Win32_USBHub : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Availability, _Caption, _ClassCode, _ConfigManagerErrorCode, _ConfigManagerUserCode, _CreationClassName, _CurrentAlternativeSettings, _CurrentConfigValue, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _GangSwitched, _InstallDate, _LastErrorCode, _Name, _NumberOfConfigs, _NumberOfPorts, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _ProtocolCode, _Status, _StatusInfo, _SubclassCode, _SystemCreationClassName, _SystemName, _USBVersion } public string GetInfo { get { return GetWMI(this); } } } public class Win32_VideoController : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _AcceleratorCapabilities_, _AdapterCompatibility, _AdapterDACType, _AdapterRAM, _Availability, _CapabilityDescriptions_, _Caption, _ColorTableEntries, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _CurrentBitsPerPixel, _CurrentHorizontalResolution, _CurrentNumberOfColors, _CurrentNumberOfColumns, _CurrentNumberOfRows, _CurrentRefreshRate, _CurrentScanMode, _CurrentVerticalResolution, _Description, _DeviceID, _DeviceSpecificPens, _DitherType, _DriverDate, _DriverVersion, _ErrorCleared, _ErrorDescription, _ICMIntent, _ICMMethod, _InfFilename, _InfSection, _InstallDate, _InstalledDisplayDrivers, _LastErrorCode, _MaxMemorySupported, _MaxNumberControlled, _MaxRefreshRate, _MinRefreshRate, _Monochrome, _Name, _NumberOfColorPlanes, _NumberOfVideoPages, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _ProtocolSupported, _ReservedSystemPaletteEntries, _SpecificationVersion, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _SystemPaletteEntries, _TimeOfLastReset, _VideoArchitecture, _VideoMemoryType, _VideoMode, _VideoModeDescription, _VideoProcessor } public string GetInfo { get { return GetWMI(this); } } } public class Win32_VoltageProbe : Win32 { public string Name { get { return this.GetType().ToString().Split('+').Last().Split('.').Last(); } } public Property property { get; set; } public enum Property { _Accuracy, _Availability, _Caption, _ConfigManagerErrorCode, _ConfigManagerUserConfig, _CreationClassName, _CurrentReading, _Description, _DeviceID, _ErrorCleared, _ErrorDescription, _InstallDate, _IsLinear, _LastErrorCode, _LowerThresholdCritical, _LowerThresholdFatal, _LowerThresholdNonCritical, _MaxReadable, _MinReadable, _Name, _NominalReading, _NormalMax, _NormalMin, _PNPDeviceID, _PowerManagementCapabilities_, _PowerManagementSupported, _Resolution, _Status, _StatusInfo, _SystemCreationClassName, _SystemName, _Tolerance, _UpperThresholdCritical, _UpperThresholdFatal, _UpperThresholdNonCritical } public string GetInfo { get { return GetWMI(this); } } }