现在的位置: 首页 > 综合 > 正文

ASP获取客户端硬件信息(CPU、硬盘、主板、mac地址等)

2012年07月14日 ⁄ 综合 ⁄ 共 19514字 ⁄ 字号 评论关闭

转自:http://blog.csdn.net/tsxnb/archive/2009/10/02/4627683.aspx

  ASP获取客户端硬件信息(CPU、硬盘、主板、mac地址等) 收藏
<HTML>
<HEAD>
<TITLE>WMI Scripting HTML </TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>
      var value = "客户端硬件信息";
   var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
   var service = locator.ConnectServer(".");
   var properties = service.ExecQuery("SELECT * FROM Win32_Processor");//CPU 信息
   var e = new Enumerator (properties);
   var p = e.item ();
      var value=value+ p.SystemName + "CPU:"+ p.Name +p.ProcessorID
   var properties = service.ExecQuery("SELECT * FROM Win32_DiskDrive");//硬盘序列号 信息
   var e = new Enumerator (properties);
   var p = e.item ();
      var value=value+"HD:"+p.signature
   var properties = service.ExecQuery("SELECT * FROM Win32_BaseBoard");//主板信息
   var e = new Enumerator (properties);
   var p = e.item ();
      //var value=value+"BB:"+ p.Product; //在一些机器在上无法读取
document.forms[0].txtMACAddr.value=unescape(MACAddr);  //MAC
document.forms[0].txtIPAddr.value=unescape(IPAddr);    //IP
//document.forms[0].txtDNSName.value=unescape(sDNSName); //主机名
document.forms[0].txtDNSName.value=value; //增加的部份包括CPU硬盘主板
document.formbar.submit();
</SCRIPT>
<SCRIPT language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo>
 if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)
 {
 if(objObject.MACAddress != null && objObject.MACAddress != "undefined") MACAddr = objObject.MACAddress;
 if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined") IPAddr = objObject.IPAddress(0);
 if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined") sDNSName = objObject.DNSHostName;
 }
 </SCRIPT>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR>
</HEAD>
<BODY>
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT> </OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223> </OBJECT>
<SCRIPT language=JScript>
var service = locator.ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</SCRIPT>
<FORM id="formfoo" name="formbar" action="mac.asp" method="post">
 <INPUT type="hidden" value="00-11-11-B4-52-EF" name="txtMACAddr" size="10">
 <INPUT type="hidden" value="210.42.38.50" name="txtIPAddr">
 <INPUT type="hidden" value="zhupan" name="txtDNSName">
</FORM>
</BODY>
</HTML> 

注意:以上Activex控件将被阻止,

1、对于Windows XP或Windows 2003,打开IE的“工具”菜单栏,选择“Internet选项”,点击“安全”—>“受信任站点”,选择“自定义级别”,打开“安全设置”对话框,将其中“对没有标记为安全的ActiveX控件进行初始化和脚本运行”和“下载未签名的ActiveX控件”都设置为“提示”或者“启用” 。

2、vista下安装注册activex控件以及IE8的设置:

    首先,要把系统的UAC关掉,或者以administrator登录(方法1:使用命令提示符激活与禁用:进入开始菜单,在“开始搜索”框中输入“cmd”,在上方出现的项目“cmd.exe”右击,在出现的快捷菜单中选择“以管理员身份运行”,之后在出现的管理权限的命令提示符框中输入“net user Administrator /Active:yes”之后,回车退出。重新启动计算机或注销计算机,你就会发现Administrator账户出现在登录画面上了。同样,当你想要禁用Windows Vista中的Administrator账户的时候,只需像上面一样操作,只不过最后在命令行中输入的是“net user Administrator /Active:no”罢了。 方法2:使用系统管理工具激活与禁用:因为vista home premium中没有“本地用户和组”这一项,所以这个方法只针对64位的vista。进入开始菜单,在右列中选中计算机,右击弹出快捷菜单,点击“管理”,找到“计算机管理(本地)”-“系统工具”-“本地用户和组”-“用户”,在右侧双击“Administrator”,在弹出的窗口中把“账户已禁用”前的钩去掉。确定后注销或重新启动计算机,同样可在启动画面上发现Administrator账户的出现。类似的,当你要再次禁用Administrator账户时,只要把那个“账户已禁用”前的钩再次勾选上就可以了。在你用administrator登录,或者用其他用户登录后,用上述方法1,运行命令行窗口,然后把ocx或者dll控件,下载到本地,拷贝到system32目录下,在命令行窗口输入regsvr32 xxxxx即可。)

    其次,将你要安装控件的站点加入浏览器可信站点,并且将可信站点安全性降低,所有activex控件都要允许。或者在控制面板--程序与功能--打开或关闭windows功能中找到“安装activex控件”(大概是叫这个名字,因为同样home premium中没有这项)勾选上,可能是同样的效果。

    最后,最关键的一点,如果你是IE8的用户,那么你一定要用administrator登录,或者关闭uac后,打开浏览器,工具---internet选项---高级---启用内存保护帮助减少联机攻击,这个勾勾一定要去掉,我之前的ocx控件一直是注册成功的,但是就是运行不了,找了两天的原因,才发现是他在捣鬼。

参考1:http://blog.csdn.net/KOOK_OKKO/archive/2008/05/26/2480889.aspx
参考2:http://blog.csdn.net/vkqiang/archive/2008/12/23/3588638.aspx 

给政府做的,安全要求高,居然用硬盘序列号,MAC地址,CPU地址三项来绑定指定的人来操作:

<html>

<head>
<title>提取硬盘序列号</title>
<script>
function disk() {//硬盘序列号 信息
   var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
   var service = locator.ConnectServer(".");
   var properties = service.ExecQuery("SELECT * FROM Win32_DiskDrive");
   var e = new Enumerator (properties);
   document.write("<table border=1>");
   for (;!e.atEnd();e.moveNext ())
   {
      var p = e.item ();
      document.write("<tr>");
      document.write("<td>" + p.signature + "</td>");
      document.write("</tr>");
   }
   document.write("</table>");
}

</script>
</head>
<body>
<input type="button" value="硬盘序列号" onclick="disk()">
</body>
</html>

通过javascript这种客户端脚本来获得客户端信息其他实例:

<html>
<head>
<title>javascript获得客户端硬件信息-www.web2bar.cn/</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

<script id=clientEventHandlersJS language=javascript>
<!--
function Button2_onclick() {//CPU 信息
   var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
   var service = locator.ConnectServer(".");
   var properties = service.ExecQuery("SELECT * FROM Win32_Processor");
   var e = new Enumerator (properties);
   document.write("<table border=1>");
   for (;!e.atEnd();e.moveNext ())
   {
      var p = e.item ();
      document.write("<tr>");
      document.write("<td>" + p.Caption + "</td>");
      document.write("<td>" + p.DeviceID + "</td>");
      document.write("<td>" + p.Name + "</td>");
      document.write("<td>" + p.CpuStatus + "</td>");
      document.write("<td>" + p.Availability + "</td>");
      document.write("<td>" + p.Level + "</td>");
      document.write("<td>" + p.ProcessorID + "</td>");
      document.write("<td>" + p.SystemName + "</td>");
      document.write("<td>" + p.ProcessorType + "</td>");
      document.write("</tr>");
   }
   document.write("</table>");
}
  
function Button1_onclick() {//软盘信息
   var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
   var service = locator.ConnectServer(".");
   var properties = service.ExecQuery("SELECT * FROM Win32_FloppyDrive");
   var e = new Enumerator (properties);
   document.write("<table border=1>");
   for (;!e.atEnd();e.moveNext ())
   {
      var p = e.item ();
      document.write("<tr>");
      document.write("<td>" + p.Description + "</td>");
      document.write("<td>" + p.DeviceID + "</td>");
      document.write("<td>" + p.Status + "</td>");
      document.write("<td>" + p.Manufacuturer + "</td>");
      document.write("</tr>");
   }
   document.write("</table>");
}
  
function Button1_onclick() {//CD-ROM 信息
   var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
   var service = locator.ConnectServer(".");
   var properties = service.ExecQuery("SELECT * FROM Win32_CDROMDrive");
   var e = new Enumerator (properties);
   document.write("<table border=1>");
   for (;!e.atEnd();e.moveNext ())
   {
      var p = e.item ();
      document.write("<tr>");
      document.write("<td>" + p.Caption + "</td>");
      document.write("<td>" + p.Description + "</td>");
      document.write("<td>" + p.Drive + "</td>");
      document.write("<td>" + p.Status + "</td>");
      document.write("<td>" + p.MediaLoaded + "</td>");
      document.write("</tr>");
   }
   document.write("</table>");
}
  
function Button1_onclick() {//键盘信息
   var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
   var service = locator.ConnectServer(".");
   var properties = service.ExecQuery("SELECT * FROM Win32_Keyboard");
   var e = new Enumerator (properties);
   document.write("<table border=1>");
   for (;!e.atEnd();e.moveNext ())
   {
      var p = e.item ();
      document.write("<tr>");
      document.write("<td>" + p.Description + "</td>");
      document.write("<td>" + p.Name + "</td>");
      document.write("<td>" + p.Status + "</td>");
      document.write("</tr>");
   }
   document.write("</table>");
}
  
function Button1_onclick() {//主板信息
   var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
   var service = locator.ConnectServer(".");
   var properties = service.ExecQuery("SELECT * FROM Win32_BaseBoard");
   var e = new Enumerator (properties);
   document.write("<table border=1>");
   for (;!e.atEnd();e.moveNext ())
   {
      var p = e.item ();
      document.write("<tr>");
      document.write("<td>" + p.HostingBoard + "</td>");
      document.write("<td>" + p.Manufacturer + "</td>");
      document.write("<td>" + p.PoweredOn + "</td>");
      document.write("<td>" + p.Product + "</td>");
      document.write("<td>" + p.SerialNumber + "</td>");
      document.write("<td>" + p.Version + "</td>");
      document.write("</tr>");
   }
   document.write("</table>");
}
//-->
</script>
</head>

<body>
<INPUT id="Button1" type="button" value="Button" name="Button1" language=javascript onclick="return Button1_onclick()">
</body>
</html>

=================================================
其他资料:
using   System;
using   System.Management;

namespace   HTSoft.Common.Register
{
        ///   <summary>  
        ///   计算机信息类
        ///   </summary>  
        internal   class   Computer
        {
                public   string   CpuID;
                public   string   MacAddress;
                public   string   DiskID;
                public   string   IpAddress;
                public   string   LoginUserName;
                public   string   ComputerName;
                public   string   SystemType;
                public   string   TotalPhysicalMemory;   //单位:M  
                private   static   Computer   _instance;

                internal   static   Computer   Instance()
                {
                        if   (_instance   ==   null)
                                _instance   =   new   Computer();
                        return   _instance;
                }

                internal   Computer()
                {
                        CpuID   =   GetCpuID();
                        MacAddress   =   GetMacAddress();
                        DiskID   =   GetDiskID();
                        IpAddress   =   GetIPAddress();
                        LoginUserName   =   GetUserName();
                        SystemType   =   GetSystemType();
                        TotalPhysicalMemory   =   GetTotalPhysicalMemory();
                        ComputerName   =   GetComputerName();
                }
                string   GetCpuID()
                {
                        try
                        {
                                //获取CPU序列号代码  
                                string   cpuInfo   =   " ";//cpu序列号  
                                ManagementClass   mc   =   new   ManagementClass( "Win32_Processor ");
                                ManagementObjectCollection   moc   =   mc.GetInstances();
                                foreach   (ManagementObject   mo   in   moc)
                                {
                                        cpuInfo   =   mo.Properties[ "ProcessorId "].Value.ToString();
                                }
                                moc   =   null;
                                mc   =   null;
                                return   cpuInfo;
                        }
                        catch
                        {
                                return   "unknow ";
                        }
                        finally
                        {
                        }

                }
                string   GetMacAddress()
                {
                        try
                        {
                                //获取网卡硬件地址  
                                string   mac   =   " ";
                                ManagementClass   mc   =   new   ManagementClass( "Win32_NetworkAdapterConfiguration ");
                                ManagementObjectCollection   moc   =   mc.GetInstances();
                                foreach   (ManagementObject   mo   in   moc)
                                {
                                        if   ((bool)mo[ "IPEnabled "]   ==   true)
                                        {
                                                mac   =   mo[ "MacAddress "].ToString();
                                                break;
                                        }
                                }
                                moc   =   null;
                                mc   =   null;
                                return   mac;
                        }
                        catch
                        {
                                return   "unknow ";
                        }
                        finally
                        {
                        }

                }
                string   GetIPAddress()
                {
                        try
                        {
                                //获取IP地址  
                                string   st   =   " ";
                                ManagementClass   mc   =   new   ManagementClass( "Win32_NetworkAdapterConfiguration ");
                                ManagementObjectCollection   moc   =   mc.GetInstances();
                                foreach   (ManagementObject   mo   in   moc)
                                {
                                        if   ((bool)mo[ "IPEnabled "]   ==   true)
                                        {
                                                //st=mo[ "IpAddress "].ToString();  
                                                System.Array   ar;
                                                ar   =   (System.Array)(mo.Properties[ "IpAddress "].Value);
                                                st   =   ar.GetValue(0).ToString();
                                                break;
                                        }
                                }
                                moc   =   null;
                                mc   =   null;
                                return   st;
                        }
                        catch
                        {
                                return   "unknow ";
                        }
                        finally
                        {
                        }

                }

                string   GetDiskID()
                {
                        try
                        {
                                //获取硬盘ID  
                                String   HDid   =   " ";
                                ManagementClass   mc   =   new   ManagementClass( "Win32_DiskDrive ");
                                ManagementObjectCollection   moc   =   mc.GetInstances();
                                foreach   (ManagementObject   mo   in   moc)
                                {
                                        HDid   =   (string)mo.Properties[ "Model "].Value;
                                }
                                moc   =   null;
                                mc   =   null;
                                return   HDid;
                        }
                        catch
                        {
                                return   "unknow ";
                        }
                        finally
                        {
                        }

                }

                ///   <summary>  
                ///   操作系统的登录用户名  
                ///   </summary>  
                ///   <returns> </returns>  
                string   GetUserName()
                {
                        try
                        {
                                string   st   =   " ";
                                ManagementClass   mc   =   new   ManagementClass( "Win32_ComputerSystem ");
                                ManagementObjectCollection   moc   =   mc.GetInstances();
                                foreach   (ManagementObject   mo   in   moc)
                                {

                                        st   =   mo[ "UserName "].ToString();

                                }
                                moc   =   null;
                                mc   =   null;
                                return   st;
                        }
                        catch
                        {
                                return   "unknow ";
                        }
                        finally
                        {
                        }

                }

                ///   <summary>  
                ///   PC类型  
                ///   </summary>  
                ///   <returns> </returns>  
                string   GetSystemType()
                {
                        try
                        {
                                string   st   =   " ";
                                ManagementClass   mc   =   new   ManagementClass( "Win32_ComputerSystem ");
                                ManagementObjectCollection   moc   =   mc.GetInstances();
                                foreach   (ManagementObject   mo   in   moc)
                                {

                                        st   =   mo[ "SystemType "].ToString();

                                }
                                moc   =   null;
                                mc   =   null;
                                return   st;
                        }
                        catch
                        {
                                return   "unknow ";
                        }
                        finally
                        {
                        }

                }

                ///   <summary>  
                ///   物理内存  
                ///   </summary>  
                ///   <returns> </returns>  
                string   GetTotalPhysicalMemory()
                {
                        try
                        {

                                string   st   =   " ";
                                ManagementClass   mc   =   new   ManagementClass( "Win32_ComputerSystem ");
                                ManagementObjectCollection   moc   =   mc.GetInstances();
                                foreach   (ManagementObject   mo   in   moc)
                                {

                                        st   =   mo[ "TotalPhysicalMemory "].ToString();

                                }
                                moc   =   null;
                                mc   =   null;
                                return   st;
                        }
                        catch
                        {
                                return   "unknow ";
                        }
                        finally
                        {
                        }
                }
                ///   <summary>  
                ///     获取计算机名称
                ///   </summary>  
                ///   <returns> </returns>  
                string   GetComputerName()
                {
                        try
                        {
                                return   System.Environment.GetEnvironmentVariable( "ComputerName ");
                        }
                        catch
                        {
                                return   "unknow ";
                        }
                        finally
                        {
                        }
                }
        }
}
 
 
============================
 #10楼 得分:20回复于:2007-06-21 10:41:21

WMI代码如下(可以获取所有网卡的MAC地址):
using   System;
using   System.Management;
using   System.Windows.Forms;

namespace   WMISample
{
  public   class   MyWMIQuery
   {
   public   static   void   Main()
     {
       try
       {
        ManagementObjectSearcher   searcher   =  
        new   ManagementObjectSearcher( "root//CIMV2 ",  "SELECT   *   FROM   Win32_NetworkAdapter ");  
        foreach   (ManagementObject   queryObj   in   searcher.Get())
         {
           Console.WriteLine( "----------------------------------- ");
           Console.WriteLine( "Win32_NetworkAdapter   instance ");
           Console.WriteLine( "----------------------------------- ");
           Console.WriteLine( "MACAddress:   {0} ",   queryObj[ "MACAddress "]);
         }
       }
         catch  (ManagementException  e)
         {
         MessageBox.Show( "An error occurred while querying for WMI data: " + e.Message);
         }
     }
   }
}
============================

用javascript获取机器名和window登录名

http://blog.csdn.net/reamerit/archive/2009/05/09/4162980.aspx
 
代码如下:
<script language=javascript>
var WshShell =new ActiveXObject("WScript.Shell");
alert("计算机名 = "+ WshShell.ExpandEnvironmentStrings("%

COMPUTERNAME%"));
alert("登录用户名 = "+ WshShell.ExpandEnvironmentStrings("%

USERNAME%"));
</script>

<script language=javascript>
var wshNetwork = new ActiveXObject("WScript.Network");
alert("域名       = "+ wshNetwork.UserDomain);
alert("计算机名   = "+ wshNetwork.ComputerName);
alert("登录用户名 = "+ wshNetwork.UserName);
</script>
====================================

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tsxnb/archive/2009/10/02/4627683.aspx

抱歉!评论已关闭.