2013-10-08 38 views
0

在Web項目中,我有一個頁面提取本地系統Mac-id和其他值,如processorid等,因爲我已經使用了下面的代碼它在Localhost的開發過程中非常完美,但是當我們發佈了網站並且現在使用相同的頁面來獲取細節時,它正在獲取Web服務器的細節。是否有任何替代方式來獲取本地機器的細節。Kindly任何一個幫助。如何獲取客戶端系統Mac-id和其他詳細信息,如IP地址等

我UED的抓取系統的詳細信息的代碼,

#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 

編輯

它可能不是在互聯網上,因爲用戶要註冊系統,所以只有他/她獲取細節和註冊,那麼有沒有什麼辦法可以通過按一下按鈕來自動從用戶端獲取用戶PC數據。

+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-applet) – FallenSquirrel

回答

4

如果您的應用程序是Intranet應用程序,您可以先獲取客戶端的IP地址,然後應用ARP獲取客戶端設備/機器的mac ID。我已經爲我的一個項目完成了這項工作,以獲取客戶端設備的MAC ID,但我已經使用了DHCP讀取。

+0

是否有可能讓用戶自動獲取詳細信息並從他的末端註冊 – Rajesh

+0

或者其網站是否可以在Windows上訪問。您可以使用silverlight並請求用戶使用提升信任度的瀏覽器 –

+0

ya PC只與Windows操作系統兼容,並且我不知道什麼是帶有提升信任的**瀏覽器**您是否可以解釋它或提供鏈接我可以在那裏瞭解它。 – Rajesh

相關問題