0

在 web 项目中,我有一个页面,它获取本地系统 Mac-id 和其他值,例如处理器 ID 等,因为我使用了下面的代码。它在开发期间运行良好,Localhost但是当我们发布网站并现在使用获取详细信息的同一页面,它正在获取 Web 服务器的详细信息。是否有任何替代方法来获取本地计算机详细信息。请任何人帮助。

我用于获取系统详细信息的代码是,

  #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 数据只需单击一个按钮.

4

1 回答 1

4

通过 Internet,如果设备/系统位于网络中的路由器之后,则无法获取客户端计算机的 Mac 地址,但如果您的应用程序是 Intranet 应用程序,您可以先获取客户端的 IP 地址,然后应用 ARP 来获取 mac客户端设备/机器的 ID。我已经为我的一个项目完成了此操作以获取客户端设备的 mac ID,但我使用了 DHCP 读取相同的内容。

于 2013-10-08T10:50:08.600 回答