c # Как получить информацию о компьютере, используя IP-адрес - PullRequest
0 голосов
/ 09 февраля 2019

Я хочу получить информацию о компьютере, используя адрес IPv4.В настоящее время я могу получить только имя и IPv4.Но я хочу: IPv4, IPv6, MAC, Имя, информация об ОС и т. Д. Как я могу это сделать?Также извините, если это дубликат.

Редактировать: Вот код, который я использую для получения информации (мне пришлось перевести его)

public static string[] PingPC(string address, string data)
    {
        string[] info = new string[5];
        try
        {
            Ping pingSender = new Ping();
            PingOptions options = new PingOptions();
            options.DontFragment = true; 

            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int timeout = 100;
            PingReply reply = pingSender.Send(address, timeout, buffer, options); 

            if (reply.Status == IPStatus.Success)
            {
                info[0] = reply.Address.ToString();

                IPHostEntry hostentry = Dns.GetHostEntry(info[0]);
                info[1] = hostentry.HostName;

                info[2] = reply.Buffer.Length.ToString();
                info[3] = reply.Options.Ttl.ToString();
                info[4] = reply.RoundtripTime.ToString();

                return info;
            }
        }
        catch (Exception e)
        {
            throw new CantPingException();
        }

        return info;
    }

1 Ответ

0 голосов
/ 09 февраля 2019

Вы можете использовать WMI, из которого вы можете получить доступ к широкому спектру информации о ПК.Такая информация включает в себя серийный номер процессора, номер сборки, системный серийный номер и т. Д. Вам просто нужно найти нужный объект и написать правильный запрос.Поскольку контекст этой темы очень большой, я приведу лишь пример, который поможет вам получить представление об использовании WMI, и вам следует поискать то, что вам нужно, в документации MSDN.

ManagementClass mc = new ManagementClass("win32_processor");
ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)
{
     var processorId = mo.Properties["processorID"].Value.ToString();
     break;
}

Для получения дополнительной информации см. Эту ссылку .

В соответствии с MSDN следующий класс предоставляет вам информацию о них:

[Dynamic, Provider("CIMWin32"), UUID("{8502C4C0-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_NetworkAdapter : CIM_NetworkAdapter
{
  string   AdapterType;
  uint16   AdapterTypeID;
  boolean  AutoSense;
  uint16   Availability;
  string   Caption;
  uint32   ConfigManagerErrorCode;
  boolean  ConfigManagerUserConfig;
  string   CreationClassName;
  string   Description;
  string   DeviceID;
  boolean  ErrorCleared;
  string   ErrorDescription;
  string   GUID;
  uint32   Index;
  datetime InstallDate;
  boolean  Installed;
  uint32   InterfaceIndex;
  uint32   LastErrorCode;
  string   MACAddress;
  string   Manufacturer;
  uint32   MaxNumberControlled;
  uint64   MaxSpeed;
  string   Name;
  string   NetConnectionID;
  uint16   NetConnectionStatus;
  boolean  NetEnabled;
  string   NetworkAddresses[];
  string   PermanentAddress;
  boolean  PhysicalAdapter;
  string   PNPDeviceID;
  uint16   PowerManagementCapabilities[];
  boolean  PowerManagementSupported;
  string   ProductName;
  string   ServiceName;
  uint64   Speed;
  string   Status;
  uint16   StatusInfo;
  string   SystemCreationClassName;
  string   SystemName;
  datetime TimeOfLastReset;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...