网络编程
位置:首页>> 网络编程>> JavaScript>> 利用WSH获取计算机硬件信息、DNS信息等

利用WSH获取计算机硬件信息、DNS信息等

作者:Rimifon 来源:无忧脚本 发布时间:2008-05-05 13:04:00 

标签:wsh,dns,ip,js

monfs :我想知道javascript是否可以实现这样的功能来改变本地的IP地址,例如我本地设置的IP地址是192.168.0.1,我想通过javascript+html实现IP变换的小程序!

Rimifon :如果使用IE,会有安全限制,如果使用纯wsh或者hta,应该能够实现。

修改DNS(另存为IP.jse或者IP.js,双击运行):

var WMI = GetObject("winmgmts://127.0.0.1");
var sql = "select * from Win32_NetworkAdapterConfiguration where IPEnabled=true";
var enmPing = new Enumerator(WMI.ExecQuery(sql));
var arrAdp = new Array;
while(!enmPing.atEnd())
{
    var arrIP = new Array;
    var objIP = enmPing.item();
    arrIP.push("网卡说明:" + objIP.Description);
    arrIP.push("硬件地址:" + objIP.MACAddress);
    arrIP.push("动态地址:" + (objIP.DHCPEnabled ? "是" : "否"));
    arrIP.push("网络地址:" + GetVBArray(objIP.IPAddress));
    arrIP.push("域名解析:" + GetVBArray(objIP.DNSServerSearchOrder));
    arrIP.push("子网掩码:" + GetVBArray(objIP.IPSubnet));
    arrIP.push("默认网关:" + GetVBArray(objIP.DefaultIPGateway));
    /* 将首选DNS设置为220.192.0.130,第二DNS设置为220.192.32.103 */
    //objIP.SetDNSServerSearchOrder(["220.192.0.130", "220.192.32.103"]);
    /* 修改后需要重新查询才能生效 */
    arrAdp.push(arrIP.join("\r\n"));
    enmPing.moveNext();
}
WSH.Echo(arrAdp.join("\r\n\r\n"));
function GetVBArray(arr)
{
    return arr !== null ? new VBArray(arr).toArray() : [];
}

查看计算机硬件信息:


var WMI = GetObject("WinMgmts://127.0.0.1");
/* 用于远程调用
var objRmt = new ActiveXObject("WbemScripting.SWbemLocator");
var WMI = objRmt.ConnectServer("www.fengyun.org", "", "Administrator", "******");
//*/
var arrOS = new Array;

/* 查询系统信息 */
var sql = "select * from Win32_OperatingSystem";
GetInfo(sql, function(obj)
{
    var arrTmp = ["系统"];
    arrTmp.push("计算机名:" + obj.CSName);
    arrTmp.push("操作系统:" + obj.Caption + "(" + obj.CSDVersion + ")");
    arrTmp.push("安装时间:" + ParseTime(obj.InstallDate));
    arrTmp.push("启动时间:" + ParseTime(obj.LastBootUpTime));
    return arrTmp;
});
sql = "select * from Win32_BIOS";
GetInfo(sql, function(obj)
{
    var arrTmp = ["BIOS"];
    arrTmp.push("名    称:" + obj.Name);
    arrTmp.push("版    本:" + obj.Version);
    arrTmp.push("发布日期:" + ParseTime(obj.ReleaseDate));
    return arrTmp;
});
sql = "select * from Win32_Processor";
GetInfo(sql, function(obj)
{
    var arrTmp = ["中央处理器"];
    arrTmp.push("设备标示:" + obj.DeviceID);
    arrTmp.push("名    称:" + obj.Name);
    arrTmp.push("说    明:" + obj.Description);
    arrTmp.push("版    本:" + obj.Version);
    arrTmp.push("工作频率:" + ParseSpeed(obj.CurrentClockSpeed));
    return arrTmp;
});
sql = "select * from Win32_PhysicalMemory";
GetMemInfo(sql);
sql = "select * from Win32_LogicalDisk where DriveType=3";
GetDiskInfo(sql);
sql = "select * from Win32_VideoController";
GetInfo(sql, function(obj)
{
    var arrTmp = ["显卡"];
    arrTmp.push("芯片类型:" + obj.VideoProcessor);
    arrTmp.push("显存大小:" + ParseMemory(obj.AdapterRAM));
    return arrTmp;
});

WSH.Echo(arrOS.join("\r\n\r\n"));

function GetInfo(sql, func)
{
    var enmObj = new Enumerator(WMI.ExecQuery(sql));
    while(!enmObj.atEnd())
    {
        arrOS.push(func(enmObj.item()).join("\r\n"));
        enmObj.moveNext();
    }
}
function ParseTime(strTime)
{
    return strTime.replace(/(.{4})(.{2})(.{2})(.{2})(.{2})(.{2}).*/, "$1-$2-$3 $4:$5:$6");
}
function ParseSpeed(speed)
{
    if(speed > 999) return (speed / 1000) + " GHz";
    return speed + " MHz";
}
function GetMemInfo(sql)
{
    var totalSize = 0;
    var enmObj = new Enumerator(WMI.ExecQuery(sql));
    while(!enmObj.atEnd())
    {
        totalSize -= -enmObj.item().Capacity;
        enmObj.moveNext();
    }
    var arrTmp = ["物理内存(总共 " + ParseMemory(totalSize) + ")"];
    enmObj.moveFirst();
    while(!enmObj.atEnd())
    {
        var obj = enmObj.item();
        arrTmp.push(obj.Tag + ": " + ParseMemory(obj.Capacity));
        enmObj.moveNext();
    }
    arrOS.push(arrTmp.join("\r\n"));
}
function ParseMemory(size)
{
    var i = 0, arrExt = ["字节", "KB", "MB", "GB"];
    while(true)
    {
        if(size < 1024) return size + " " + arrExt[ i ];
        size = (size / 1024).toFixed(2);
        i++;
    }
}
function GetDiskInfo(sql)
{
    var totalSize = 0;
    var enmObj = new Enumerator(WMI.ExecQuery(sql));
    while(!enmObj.atEnd())
    {
        totalSize -= -enmObj.item().Size;
        enmObj.moveNext();
    }
    var arrTmp = ["本地硬盘(总共 " + ParseMemory(totalSize) + ")"];
    enmObj.moveFirst();
    while(!enmObj.atEnd())
    {
        var obj = enmObj.item();
        arrTmp.push(obj.Name + "(" + obj.FileSystem + "): 总共 " + ParseMemory(obj.Size) + "," + ParseMemory(obj.FreeSpace) + " 可用。");
        enmObj.moveNext();
    }
    arrOS.push(arrTmp.join("\r\n"));
}

 

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com