巧用客户端ActiveXObject对象

使用VBS获取系统信息
本文介绍了一系列使用VBScript来获取计算机系统信息的方法,包括获取机器名、登录域、用户名、系统目录、特殊文件夹路径、磁盘信息等,并演示了如何通过VBScript进行基本的系统操作。

//取得机器名,登录域及登录用户名
function getusername()
{
var WshNetwork = new ActiveXObject("WScript.Network");
alert("Domain = " + WshNetwork.UserDomain);
alert("Computer Name = " + WshNetwork.ComputerName);
alert("User Name = " + WshNetwork.UserName);
}

//取得系统目录
function getprocessnum()

        var pnsys=new ActiveXObject("WScript.shell");
        pn=pnsys.Environment("PROCESS");
        alert(pn("WINDIR"));
}
//返回系统中特殊目录的路径
function getspecialfolder()

    var mygetfolder=new ActiveXObject("WScript.shell");
    if(mygetfolder.SpecialFolders("Fonts")!=null)
    { 
        alert(mygetfolder.SpecialFolders("Fonts"));
     }
}
//取得磁盘信息 传入参数如:getdiskinfo('c')
function getdiskinfo(para)

    var fs=new ActiveXObject("scripting.filesystemobject");
    d=fs.GetDrive(para);
    s="卷标:" + d.VolumnName;
    s+="------" + "剩余空间:" + d.FreeSpace/1024/1024 + "M";
    s+="------" + "磁盘序列号:" + d.serialnumber;
    alert(s)
}
//取得系统目录
function getprocessnum()

        var pnsys=new ActiveXObject("WScript.shell");
        pn=pnsys.Environment("PROCESS");
        alert(pn("WINDIR"));
}
//启动计算器
function runcalc()

    var calc=new ActiveXObject("WScript.shell");
    calc.Run("calc");
}
//读取注册表中的值
function readreg()

    var myreadreg=new ActiveXObject("WScript.shell");
    try{ 
        alert(myreadreg.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\NeroCheck"));
     }
    catch(e)
    { 
        alert("读取的值不存在!");
     }
}
//写注册表
function writereg()

    var mywritereg=new ActiveXObject("WScript.shell");
    try{ 
        mywritereg.RegWrite("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\MyTest","c:\\mytest.exe");
        alert("写入成功!");
     }
    catch(e)
    { 
        alert("写入路径不正确!");
     }
}
//删除注册表
function delreg()

    var mydelreg=new ActiveXObject("WScript.shell");
    if(confirm("是否真的删除?"))
    { 
        try{ 
    mydelreg.RegDelete("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\MyTest");
    alert("删除成功!");
}
catch(e)

    alert("删除路径不正确");
}
     }
}
//取得文件信息    调用方式如:getfileinfo('c:\\test.pdf')
function getfileinfo(para)

    var myfile=new ActiveXObject("scripting.filesystemobject");
    var fi=myfile.GetFile(para);
    alert("文件类型:"+fi.type+"文件大小:"+fi.size/1024/1024+"M"+"最后一次访问时间:"+fi.DateLastAccessed);
}

### 解决方案 #### 背景说明 `ActiveXObject` 是 Microsoft Internet Explorer 中特有的功能,用于创建和操作 COM 对象。然而,在现代浏览器中(包括 Edge 浏览器),该对象已被废弃并不可用[^1]。 为了实现 `ActiveXObject` 的功能替代,可以通过以下方法完成: --- #### 方法一:使用 XMLHttpRequest 替代 ActiveXObject 对于大多数 AJAX 请求场景,可以改用标准的 `XMLHttpRequest` 或更现代化的 Fetch API 来代替 `ActiveXObject`。以下是具体代码示例: ```javascript function createRequest() { let xhr; try { // 尝试使用原生 XMLHttpRequest (适用于现代浏览器) xhr = new XMLHttpRequest(); } catch (e) { // 如果失败,则尝试回退到 ActiveXObject (仅限旧版 IE) try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (f) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (g) { alert("您的浏览器不支持 AJAX 功能!"); return false; } } } return xhr; } const request = createRequest(); if (request) { request.open('GET', 'https://example.com/data', true); request.onreadystatechange = function () { if (this.readyState === 4 && this.status === 200) { console.log(this.responseText); } }; request.send(null); } ``` 上述代码通过检测浏览器环境来决定是否使用 `ActiveXObject` 或者 `XMLHttpRequest`。 --- #### 方法二:使用 Fetch API 实现异步请求 Fetch API 是一种更加简洁、强大的方式来进行网络请求,推荐在现代浏览器中优先使用它作为解决方案之一。 ```javascript fetch('https://example.com/data') .then(response => response.text()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); ``` 此方法不仅简化了语法结构,还提供了更好的错误处理机制[^4]。 --- #### 方法三:跨浏览器兼容性封装函数 如果需要同时支持多种类型的浏览器及其特性差异,可采用 JavaScript 进行统一封装。例如利用 User-Agent 字符串或者特定对象的存在与否来做区分[^2]: ```javascript function getBrowserType() { const userAgent = navigator.userAgent.toLowerCase(); if (/msie|trident/.test(userAgent)) { // 判断是否为 IE 浏览器 return 'IE'; } else if (window.ActiveXObject || "ActiveXObject" in window) { // 特定于某些版本 IE return 'Old_IE'; } else { return 'Modern_Browser'; // 如 Chrome, Firefox 等现代浏览器 } } console.log(getBrowserType()); ``` 根据返回的结果调整逻辑流程即可满足不同需求下的应用开发[^3]。 --- #### 总结建议 由于 Edge 浏览器基于 Chromium 内核构建而成,因此不再支持传统的 `ActiveXObject` 接口。针对此类情况应当考虑迁移至标准化接口如 `XMLHttpRequest` 或者更新一代技术——Fetch API 上面去实施相应业务逻辑转换工作[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值