0

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 
4

3 に答える 3

5

さて、あなたが望むことが可能な世界に私たちが住んでいるふりをしましょう:

  1. 世界中のすべてのWebサーバーは、コードをクライアントマシンにダンプして実行できます
  2. あなたのマシンはウェブサーバーが望むものは何でも喜んで実行します
  3. ユーザーが知らないうちに、すべて静かに実行します。
  4. このVBスクリプトコードを実行できるように、世界中のすべてのマシンを魔法のようにWindowsPCに変えます
  5. 皮肉検出器はウェブ上で一般的になり、前の4つのポイントはそのように読み取られます。

コードがコンピューターから取得しようとしているのはあなたのビジネスではないため、Webブラウザーは、スヌープコードが実行しようとしている不正なタイプを正確に防ぐためにロックダウンされています。

于 2012-01-12T19:29:19.353 に答える
2

あなた(そして特にクロエの上司)が同意するなら、それは

  • Webサイトはクライアントのコンピューターをスパイしてはいけません
  • ユーザーは、インストールしようとしているソフトウェアのシステム要件について少し支援を受ける権利があります。
  • そのような助けはセキュリティ設定の低下を伴うべきではありません

あなたのオプションは

  • 要件をリストし、それらを決定する方法を詳細に説明します
  • Windows:適切なレポートを生成/表示するHTA(HTMLアプリケーション)のソースを(ダウンロードするために)ユーザーに提供します
  • unix / linux:適切なレポートを生成/表示するスクリプトのソースを(ダウンロードするために)ユーザーに提供します(少なくとも2つの一般的な言語を選択します)
  • とにかく要件をチェックするインストーラーを作成することを考えると、それらのチェックを独立した「要件を確認する」アプリケーションにバンドルすることができます

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要素を挿入する必要があります。HTA固有の(インタラクティブな)要素/コードをHTMLに配置するのに役立つ、かなり古いウィザードがあります。一部のMSインストールCD/DVD / ISOには、さらにインスピレーションを得るために使用できるsetup.htaが含まれています。一部のグーグルでは、 SystemDocumenterWizardなどの.htaアプリを参照できます。これらのソースはいずれも、慎重なシングルステップテストなしでは信頼できません。例:公式ドキュメントから.htaを開始しましたが、厄介なものをザッピングするまでWindows7で実行できませんでした<meta http-equiv="x-ua-compatible" content="ie=9">

スクリプトを.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()必要な変更は、またはを使用してHTML要素のinnerText/HTMLに「書き込む」ことでWScript.Echo出力を置き換えることdocument.body.all()です。

情報収集のためのアイデア/サンプルコードを入手するには、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コードを比較できるようにします。

これが何の価値があるかについて-は非特権ユーザーアカウントを使用してWindowsXPと7でこれをテストしました。マイレージが変わらないことを願っています。

WRT chloeの質問「2つの異なるスクリプト言語を同じhtaに配置することは可能ですか?」:。HTA(および.WSFまたは.WSC)では、すべての(インストールされた)ActiveScript言語(VBScript、JScript、Perlscript、Pythonscript、Rubyscript)を混在させることができます、...)インラインまたはsrc属性を介してスクリプトタグを使用します。これは学習には最適ですが、一般的に本番コードには適していません。

于 2012-01-12T22:00:29.963 に答える
0

外部のjsファイルと同じように外部のvbscriptファイルを含めることができますが、Windows環境のIEでのみ実行され、特別な特権があります。

ActiveXObjectを使用してクライアントマシンから実行可能ファイルを実行できます。実行可能ファイルは、ブラウザが実行するための適切な権限を使用してクライアントマシンにインストールする必要があります。

ActiveXObjectを使用したJavaScriptの例:

var shellActiveXObject = new ActiveXObject("WScript.Shell");
shellActiveXObject.CurrentDirectory = currentFolder;
shellActiveXObject.Run(executableFullPath, 1, false);
shellActiveXObject = null;
于 2012-01-12T19:32:15.410 に答える