2012-01-12 39 views
-1

我有一個VBScript文件。當它在電腦上工作正常。我想把它放在一個PHP網站上,通過點擊按鈕來執行它。但我沒有成功。它實際上獲取計算機信息。希望它能在用戶機器上工作。任何想法將不勝感激。如果或如果任何人知道如何使用JScript如何從網站執行vbscript

這裏做的是代碼:

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

你想在客戶機上運行這個VBScript來獲取清理信息? – rkosegi 2012-01-12 19:29:28

+0

也許你不記得ILOVEYOU蠕蟲? – 2012-01-12 19:34:01

+0

@rkosegi我想要的是一種讓用戶訪問網站並檢查他們的計算機是否可以運行我們的軟件的方法,但即使我嘗試了不同的事情,所以如果您有其他想法,如果您可以共享cuz,我會很好 – chloe 2012-01-12 19:36:38

回答

1

如果你(特別是Chloe的老闆)同意,

  • 一個網站不應該在客戶端的計算機
  • 用戶對間諜有權獲得對他即將安裝的軟件的系統要求的一點幫助
  • 此類幫助不應涉及降低安全設置

你的選擇是

  • 列表中的需求,並給予詳細指導如何確定他們
  • 窗口:提供用戶(下載)一個HTA源(HTML Application)生成/節目一個合適的報告
  • unix/linux:提供用戶(下載)生成/顯示相應報告的腳本來源(至少選擇兩種流行語言)
  • TE的安裝反正,將檢查的要求,你可以捆綁這些支票存入一個獨立的「確保」的要求申請

如果你決定一個HTA將是合適的,所以說,我會加入到這個答案。

爲了讓你開始:

簡約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上使用非特權用戶帳戶對此進行了測試;我希望你的里程可能不會有所不同。 (可以將兩種不同的腳本語言放在同一個hta中):在.HTA(和.WSF或.WSC)中,可以混合所有(安裝的)ActiveScript語言(VBScript,JScript,Perlscript ,Pythonscript,Rubyscript,...)通過使用腳本標籤內聯或通過src屬性。這對學習非常有用,但通常不適用於生產代碼。

+0

我閱讀了html應用程序鏈接,這聽起來很合適,在此先感謝張貼ans。 – chloe 2012-01-13 01:47:56

+0

是否可以將兩種不同的腳本語言放在同一個hta中? – chloe 2012-01-13 13:35:08

+0

增加了一些更多的代碼,你在那裏的變化,如果你不介意看着它,那麼你可以讓我知道,我會發布,我想知道,但如果我使用src標記,而不包括Sub代碼並將其保存爲hta它仍然會引用外部腳本? – chloe 2012-01-13 17:17:05

5

好吧,讓我們只是假裝我們生活在一個世界裏,你想要什麼是可能的:

  1. 世界上的每個網絡服務器都可以將代碼轉儲到客戶端機器上並執行它
  2. 您的機器將高興地執行任何網絡服務器所需的任何東西
  3. 無所不能讓用戶知道。
  4. 神奇地將世界上的每臺機器變成一臺Windows PC,以便可以執行這個VB腳本代碼
  5. 諷刺檢測器在網絡上變得司空見慣,並且前面的4點會這樣讀取。

網絡瀏覽器被鎖定,以防止您的snoop代碼嘗試執行的濫用行爲的類型,因爲您的代碼試圖從計算機上檢索的是您的業務。

+0

我的朋友..那個世界被稱爲.. 90年代後期。 – 2012-01-12 19:35:13

+0

好吧,我想要的是讓用戶訪問一個網站,並檢查他們的電腦是否可以運行我們的軟件的方式,但即時通信理由嘗試不同的事情,所以如果你有另一個想法,將是很好,如果你可以分享cuz im clueless @ MikeChristensen – chloe 2012-01-12 19:35:27

+1

有一些activex控件可以做這種事情,例如java小程序等......就個人而言,如果一個站點開始請求在我的機器上運行任意窺探內容的權限,我就再也不會回到那個站點了。 – 2012-01-12 19:36:56

0

您可以像外部js文件一樣包含外部vbscript文件,但它只能在Windows環境中的IE中運行,並且具有特殊優勢。

您可以運行使用的ActiveXObject來自客戶機的可執行文件和可執行文件將需要在客戶機上安裝有用於執行它的瀏覽器適當的權限。

使用的ActiveXObject在JavaScript的例子:

var shellActiveXObject = new ActiveXObject("WScript.Shell"); 
shellActiveXObject.CurrentDirectory = currentFolder; 
shellActiveXObject.Run(executableFullPath, 1, false); 
shellActiveXObject = null; 
+0

你可以給我一些更多的信息也許 – chloe 2012-01-12 19:43:05

+0

我只在asp.net很久以前完成..這個例子可能會幫助你:http://forums.asp.net/t/1246508.aspx/1?Run + VBscript +與+ ASP + NET +在+客戶端+端 – 2012-01-12 19:50:40