2013-10-08 4 views
0

В веб-проекте у меня есть страница, которая извлекает идентификатор локальной системы Mac и другие значения, такие как процессор и т. Д., Для этого я использовал приведенный ниже код . Он отлично работал во время разработки в Localhost, но когда мы опубликовали веб-сайт и теперь используем одну и ту же страницу для получения сведений, он извлекает данные о веб-сервере. Есть ли альтернативный способ получения данных локальных компьютеров. любая помощь.Как получить идентификатор компьютера Mac и другие данные, такие как IP-адрес и т. Д.

Код I UEd для Fetching системы деталей,

#region Sytem Details 
    private string GetMac() 
    { 
     string Mac = string.Empty; 
     ManagementClass MC = new ManagementClass("Win32_NetworkAdapter"); 
     ManagementObjectCollection MOCol = MC.GetInstances(); 
     foreach (ManagementObject MO in MOCol) 
      if (MO != null) 
      { 
       if (MO["MacAddress"] != null) 
       { 
        Mac = MO["MACAddress"].ToString(); 
        if (Mac != string.Empty) 
         break; 
       } 
      } 
     return Mac; 
    } 



    public static string LocalIPAddress() 
    { 
     IPHostEntry host; 
     string localIP = ""; 
     host = Dns.GetHostEntry(Dns.GetHostName()); 
     foreach (IPAddress ip in host.AddressList) 
     { 
      if (ip.AddressFamily.ToString() == "InterNetwork") 
      { 
       localIP = ip.ToString(); 
      } 
     } 
     return localIP; 
    } 



    private static string GetProcessorName() 
    { 

     ManagementClass mgt = new ManagementClass("Win32_Processor"); 
     ManagementObjectCollection procs = mgt.GetInstances(); 
     foreach (ManagementObject item in procs) 
      return item.Properties["Name"].Value.ToString(); 

     return "Unknown"; 
    } 



    private string GetProcessorID() 
    { 
     string sCpuInfo = String.Empty; 
     bool bSuccess = false; 

     //*** Declare Management Class 
     ManagementClass clsMgtClass = new ManagementClass("Win32_Processor"); 
     ManagementObjectCollection colMgtObjCol = clsMgtClass.GetInstances(); 

     //*** Loop Over Objects 
     foreach (ManagementObject objMgtObj in colMgtObjCol) 
     { 
      //*** Only return cpuInfo from first CPU 
      if (sCpuInfo == String.Empty) 
      { 
       sCpuInfo = objMgtObj.Properties["ProcessorId"].Value.ToString(); 
       bSuccess = true; 
      } 
     } 
     if (bSuccess == true) 
     { 

     } 
     return sCpuInfo; 
    } 



    private static string GetName() 
    { 
     string netBiosName = System.Environment.MachineName; 

     //return netBiosName; 
     // Following method is deprecated 
     // string dnsName = 
     //  System.Net.Dns.GetHostByName("LocalHost").HostName; 

     string dnsName = System.Net.Dns.GetHostName(); 
     return dnsName; 
    } 



    private string GetOSName() 
    { 
     System.OperatingSystem os = System.Environment.OSVersion; 
     string osName = "Unknown"; 


     switch (os.Platform) 
     { 
      case System.PlatformID.Win32Windows: 
       switch (os.Version.Minor) 
       { 
        case 0: 
         osName = "Windows 95"; 
         break; 
        case 10: 
         osName = "Windows 98"; 
         break; 
        case 90: 
         osName = "Windows ME"; 
         break; 
       } 
       break; 
      case System.PlatformID.Win32NT: 
       switch (os.Version.Major) 
       { 
        case 3: 
         osName = "Windws NT 3.51"; 
         break; 
        case 4: 
         osName = "Windows NT 4"; 
         break; 
        case 5: 
         if (os.Version.Minor == 0) 
          osName = "Windows 2000"; 
         else if (os.Version.Minor == 1) 
          osName = "Windows XP"; 
         else if (os.Version.Minor == 2) 
          osName = "Windows Server 2003"; 
         else if (os.Version.Minor == 3) 
          osName = "Windows Vista"; 
         else if (os.Version.Minor == 4) 
          osName = "Windows 7"; 
         break; 
        case 6: 
         osName = "Windows 8"; 
         break; 


       } 
       break; 
     } 

     return osName; 

    } 
    #endregion 

Редактировать

Это не может быть через Интернет, поскольку пользователь собирается зарегистрировать систему, чтобы он/она только получает детали и регистры, так есть ли способ автоматического получения данных ПК пользователей с его конца одним нажатием кнопки.

+0

Я не думаю, что можно определить MAC-адрес посетителя вашей веб-страницы, особенно если он использует маршрутизатор или прокси-сервер (что большинство пользователей делает). – FallenSquirrel

+0

@FallenSquirrel Я не буду регистрировать Mac-Id посетителя моей страницы, пользователь моей страницы должен зарегистрировать свой компьютер перед некоторыми действиями, чтобы он мог войти на страницу регистрации и нажать кнопку Getdetails и зарегистрировать его PC – Rajesh

+0

Я не говорю, что было бы плохо, если бы вы зарегистрировали его, я просто говорю, что это просто невозможно. Чтобы обнаружить MAC-адрес из сетевых пакетов, вы должны находиться в той же локальной сети, что и клиент, а это не значит, что вы являетесь веб-сервером. Единственным другим методом будет работать код на стороне клиента, например Javascript, который обычно не может получить доступ к клиенту из-за ограничений безопасности (см. Здесь: http://stackoverflow.com/questions/4467905/getting-mac-address-on- a-web-page-using-a-java-апплет) – FallenSquirrel

ответ

4

В Интернете вы не можете получить Mac-адрес клиентской машины, если устройство/система приходит после маршрутизатора в сети, хотя, если ваше приложение является интрасети, вы можете сначала получить IP-адрес клиента, а затем применить ARP для получения идентификатора mac клиентского устройства/машины. Я сделал это для одного из моих проектов, чтобы получить идентификатор mac для клиентского устройства, но я использовал чтение DHCP для него.

+0

Возможно ли, чтобы пользователь автоматически получал данные и регистрировался с его конца. – Rajesh

+0

Или, если его веб-сайт можно получить в окнах. вы можете использовать silverlight и попросить своего пользователя выйти из браузера с повышенным доверием –

+0

ya ПК будет только с ОС Windows, и я не знаю, что такое ** браузер с повышенным доверием **, можете ли вы любезно объяснить его или предоставить ссылку где я могу узнать об этом. – Rajesh