在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數據。
我不認爲有可能檢測到您的網頁的訪問者的MAC地址,特別是如果他使用路由器或代理服務器(大多數用戶都這樣做)。 – FallenSquirrel
@FallenSquirrel我不打算記錄我的頁面的訪問者的Mac-Id,我的頁面的用戶必須先註冊他的電腦,然後才能進入註冊頁面並點擊Getdetails按鈕並註冊他PC – Rajesh
我並不是說如果你登錄它會很糟糕,我只是說這根本不可能。要從網絡軟件包中檢測MAC地址,必須與客戶端位於同一局域網中,如果您是網絡服務器,則不需要這個網絡。唯一的另一種方法是運行客戶端代碼,如Javascript,由於安全限制,通常無法訪問客戶端的更多信息(請參閱:http://stackoverflow.com/questions/4467905/getting-mac-address-on- a-web-page-using-a-java-applet) – FallenSquirrel