как выполнить VBScript с сайта - PullRequest
0 голосов
/ 12 января 2012

У меня есть файл 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 

Ответы [ 3 ]

5 голосов
/ 12 января 2012

Хорошо, давайте представим, что мы живем в мире, где то, что вы хотите, возможно:

  1. Каждый веб-сервер в мире может выгружать код на клиентский компьютер и запускать его
  2. Ваша машина с удовольствием выполнит все, что хочет веб-сервер
  3. Делайте все это молча, без ведома пользователя.
  4. Волшебно превращает каждую машину в мире в ПК с Windows, чтобы можно было выполнить этот код сценария VB
  5. Детекторы сарказма становятся обычным явлением в сети, и предыдущие 4 пункта будут читаться как таковые.

Веб-браузеры заблокированы, чтобы предотвратить именно тот тип оскорбительных действий, которые пытается предпринять ваш код отслеживания, потому что то, что ваш код пытается получить с компьютеров, - НИКОГО ВАШЕГО БИЗНЕСА.

1 голос
/ 13 января 2012

Если вы (и особенно начальник Хлои) согласны, то

  • сайт не должен шпионить за компьютером клиента
  • пользователь имеет право на небольшую помощь по системным требованиям для программного обеспечения, которое он собирается установить
  • такая помощь не должна включать снижение настроек безопасности

ваш выбор

  • перечислить требования и дать подробную инструкцию, как их определить
  • windows: предложить пользователю (для загрузки) источник HTA ( HTML-приложение ), которое генерирует / показывает соответствующий отчет
  • unix / linux: предложить пользователю (для загрузки) исходный код скрипта (выберите как минимум два популярных языка), который генерирует / показывает соответствующий отчет
  • учитывая, что вы все равно напишите установщик, который проверит требования, вы можете объединить эти проверки в независимое приложение «удостоверьтесь в требованиях»

Если вы решите, что 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 / DVD / ISO содержат файл setup.hta, который вы можете использовать для дальнейшего вдохновения; некоторые поиски в Google укажут на такие приложения .hta, как Мастер документирования системы . Ни одному из этих источников нельзя доверять без тщательного одноэтапного тестирования; например: я запустил свой .hta из официальных документов и не смог запустить его на Windows 7, пока я не закинул противную <meta http-equiv="x-ua-compatible" content="ie=9">.

Несмотря на то, что вы, вероятно, включите встроенный скрипт в .hta, для разработки лучше включить код через атрибут src тега script. В 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

Я пытался следовать опубликованному вами коду; необходимые изменения - заменить вывод WScript.Echo путем «записи» в HTML-элементы «innerText / HTML» с использованием document.getElementById() или 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, имеющего дело с одной и той же проблемой.

Для чего это стоит - Я проверил это на Windows XP и 7, используя непривилегированную учетную запись пользователя; Я надеюсь ваш пробег может не меняться.

Вопрос Хлои WRT «можно ли поместить два разных языка сценариев в один и тот же hta?»: В .HTA (и .WSF или .WSCs) вы можете смешивать все (установленные) языки ActiveScript (VBScript, JScript, Perlscript, Pythonscript, Rubyscript, ...) с помощью встроенного тега script или с помощью атрибута src. Это отлично подходит для обучения, но в целом не подходит для производственного кода.

0 голосов
/ 12 января 2012

Вы можете включить внешние файлы VBScript, как внешний файл JS, но он будет работать только в IE в среде Windows со специальными привилегиями.

Вы можете запустить исполняемый файл с клиентского компьютера, используяActiveXObject, и исполняемый файл должен быть установлен на клиентском компьютере с надлежащими разрешениями для его запуска браузером.

пример в javascript с использованием ActiveXObject:

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