我有一个VBScript文件。当它在电脑上时,它工作得很好。我想把它放在php网站上,让它通过点击按钮来执行。但我没有成功。它实际上可以获取计算机信息。希望它能在用户机器上运行。任何想法都将不胜感激。如果或者如果有人知道如何使用jscript
这是代码:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!''" & strComputer & "'root'cimv2")
Set colSettings = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colSettings
Wscript.Echo "OS Name: " & objOperatingSystem.Caption
Wscript.Echo "Version: " & objOperatingSystem.Version
Wscript.Echo "Available Physical Memory: " & _
objOperatingSystem.FreePhysicalMemory
Next
Set colSettings = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colSettings
Wscript.Echo "Total Physical Memory: " & _
objComputer.TotalPhysicalMemory
Next
Set objWMIService = GetObject("winmgmts:''" & strComputer & "'root'CIMV2")
Set colSettings= objWMIService.ExecQuery _
("SELECT * FROM Win32_DiskDrive")
For Each objItem In colSettings
WScript.Echo "Disk Size: " & objItem.Size
Next
Dim WSHShell
Dim objAdr
On error resume next
Set WSHShell = WScript.CreateObject("WScript.Shell")
test = wshshell.RegRead("HKEY_LOCAL_MACHINE'SOFTWARE'Microsoft'Microsoft SQL Server'Instance Names")
If err.number > 0 Then
msgbox "SQL Server not found"
else msgbox "SQL Server found"
end if
好吧,让我们假设我们生活在一个你想要的东西是可能的世界:
- 世界上的每一个Web服务器都可以将代码转储到客户端机器上并执行它
- 您的机器将愉快地执行Web服务器想要的任何内容
- 在用户不知情的情况下安静地完成所有操作
- 神奇地将世界上的每一台机器都变成了Windows PC,这样就可以执行VB脚本代码
- Sarcasm检测器在网络上变得很常见,前面的4点也会这样读
网络浏览器被锁定是为了防止你的窥探代码试图做的滥用行为,因为你的代码试图从计算机上检索的内容与你无关。
如果你(尤其是chloe的老板)同意,
- 网站不应该监视客户的电脑
- 用户有权获得关于他即将安装的软件的系统要求的一些帮助
- 这样的帮助不应该涉及降低安全设置
你的选择是
- 列出要求,并详细说明如何确定
- windows:为用户提供(下载)生成/显示适当报告的HTA(HTML应用程序)源
- unix/linux:为用户提供(下载)生成/显示适当报告的脚本源(至少选择两种流行语言)
- 考虑到您无论如何都要编写一个检查需求的安装程序,您可以将这些检查捆绑到一个独立的"确保需求"应用程序中
如果你认为HTA是合适的,就这么说吧,我会补充这个答案。
开始:
极简主义系统需求.hta:
<html>
<head>
<title>System Requirements For XXX</title>
<hta:application
id="sysreq"
></hta>
<script type="text/vbscript" src="sysreq.vbs"></script>
<script type="text/jscript" src="sysreq.js"></script>
</head>
<body onload="onload">
<table id="tblSysReq" border="1" summary="KeepTidyHappy">
<tr>
<td id="tdOS">
</td>
</tr>
<tr>
<td id="tdMSSQL">
</td>
</tr>
</table>
</body>
</html>
对于生产版本,您应该使用HTML编辑器/ide编写一个漂亮的页面,只需插入hta元素。有一个相当过时的向导可以帮助您将HTA特定的(交互式)元素/代码放入HTML中。一些MS安装CD/DVD/ISO包含一个setup.ha,您可以使用它来获得进一步的灵感;一些谷歌搜索会把你指向.hta应用程序,比如系统文档向导。如果没有仔细的一步测试,这些来源都是不可信的;例如:我从官方文档中启动了.hta,直到我清除了讨厌的<meta http-equiv="x-ua-compatible" content="ie=9">
,它才能够在Windows7上运行。
虽然您可能会将脚本内联到.hta中,但为了进行开发,最好通过script标记的src属性包含代码。在sysreq.vbs:中
Sub onload()
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!''" & strComputer & "'root'cimv2")
Set colSettings = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colSettings
' Wscript.Echo "OS Name: " & objOperatingSystem.Caption
document.getElementById("tdOS").innerText = "OS Name: " & objOperatingSystem.Caption
Next
If False Then
Dim WSHShell : Set WSHShell = CreateObject("WScript.Shell")
On error resume next
' test = wshshell.RegRead("HKEY_LOCAL_MACHINE'SOFTWARE'Microsoft'Microsoft SQL Server'Instance Names")
test = wshshell.RegRead("HKEY_LOCAL_MACHINE'SOFTWARE'Microsoft'Microsoft SQL Server'Instance Names'SQL'SQLEXPRESS")
If 0 <> Err.Number Then
' msgbox "SQL Server not found"
MsgBox Err.Description
test = "SQL Server <b>not</b> found"
Else
' msgbox "SQL Server found"
test = "<i>SQL Server found</i>"
End If
document.body.all("tdMSSQL").innerHTML = test
Else
JsHelper
End If
End Sub
我试着遵循你发布的代码;必要的更改是通过使用document.getElementById()
或document.body.all()
"写入"HTML元素的innerText/HTML来替换WScript.Echo输出。
要获得收集信息的想法/示例代码,请查看Scriptomatic等工具。正如您提到的JScript,我引入了sysreq.js:
function JsHelper() {
var WSHShell = new ActiveXObject("WScript.Shell")
try {
var test = WSHShell.RegRead("HKEY_LOCAL_MACHINE''SOFTWARE''Microsoft''Microsoft SQL Server''Instance Names''SQL''SQLEXPRESS");
document.all.tdMSSQL.innerHTML = "<i>SQL Server found</i>";
}
catch(e) {
alert(e);
document.all.tdMSSQL.innerHTML = "SQL Server <b>not</b> found";
}
}
让您比较处理相同问题的JScript和VBScript代码。
值得一提的是,我使用非特权用户帐户在Windows XP和7上测试了这一点;我希望您的里程数不会有所不同。
WRT chloe的问题"是否可以将两种不同的脚本语言放在同一个hta中?":在.hta(和.WSF或.WSC)中,您可以通过内联或通过src属性使用脚本标记来混合所有(已安装的)ActiveScript语言(VBScript、JScript、Perlscript、Pythonscript、Rubyscript…)。这非常适合学习,但通常不适合生产代码。
您可以像外部js文件一样包含外部vbscript文件,但它只能在Windows环境中的IE中运行,并具有特殊权限。
您可以使用ActiveXObject从客户端计算机运行可执行文件,并且该可执行文件需要安装在具有适当权限的客户端计算机上,浏览器才能执行它
javascript中使用ActiveXObject:的示例
var shellActiveXObject = new ActiveXObject("WScript.Shell");
shellActiveXObject.CurrentDirectory = currentFolder;
shellActiveXObject.Run(executableFullPath, 1, false);
shellActiveXObject = null;