我有一个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
答案 0 :(得分:5)
好吧,让我们假装我们生活在一个你想要的世界:
Web浏览器被锁定以防止您的snoop代码尝试执行的滥用行为的类型,因为您的代码试图从计算机检索的内容是您的业务。
答案 1 :(得分:1)
如果你(特别是克洛伊的老板)同意,那
您的选择
如果您认为HTA适合,请说明,我将添加此答案。
为了帮助您入门:
Minimalistic sysreq.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元素。有一个相当过时的wizard可以帮助您将HTA特定(交互)元素/代码放入HTML中。某些MS安装CD / DVD / ISO包含一个setup.hta,您可以使用它来获得更多灵感;一些谷歌会指向你.hta应用程序,如System Documenter Wizard。没有仔细的单步测试,这些来源都不可信;例如:我从the official docs开始我的.hta并且无法让它在Windows 7上运行,直到我破坏了令人讨厌的<meta http-equiv="x-ua-compatible" content="ie=9">
。
虽然您可能会将脚本内嵌到.hta中,但为了开发它,最好通过脚本标记的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中放置两种不同的脚本语言?”:在.HTAs(和.WSFs或.WSC)中,您可以混合所有(已安装的)ActiveScript语言(VBScript,JScript,Perlscript, Pythonscript,Rubyscript,...)通过内联或通过src属性使用脚本标记。这非常适合学习,但通常不适合生产代码。
答案 2 :(得分:0)
您可以像外部js文件一样包含外部vbscript文件,但它只能在Windows环境中的IE中运行,具有特殊权限。
您可以使用ActiveXObject从客户端计算机运行可执行文件,并且需要在客户端计算机上安装可执行文件,并具有浏览器执行它的适当权限。
使用ActiveXObject的javascript示例:
var shellActiveXObject = new ActiveXObject("WScript.Shell");
shellActiveXObject.CurrentDirectory = currentFolder;
shellActiveXObject.Run(executableFullPath, 1, false);
shellActiveXObject = null;