2016-02-03 6 views
3

Я хотел бы знать, что является хостом по умолчанию для VBScript на конкретной машине, независимо от того, установлен ли WScript или CScript? Например, если я использую «cscript // h: cscript // s», то есть ли способ проверить хост для VBScript, установлен на cscript?Как проверить хост по умолчанию для VBScript - это WScript или CScript?

Я нашел команды для изменения хоста по умолчанию, но не нашел команду для проверки хоста по умолчанию.

Edit:

C: \ Windows \ system32> Cscript // ч: Cscript // s

Microsoft (R) Windows Script хоста Version 5.8 Copyright (C) Корпорация Microsoft. Все права защищены.

Параметры командной строки сохраняются. Узел сценария по умолчанию теперь установлен на «cscript.exe».

C: \ Windows \ system32> Ftype VBSFile

VBSFile = "% SystemRoot% \ System32 \ WScript.exe" "% 1" % *

+0

Для см. исполняемую команду, связанную с файлами VBScript, вы можете проверить вывод команды 'ftype VBSFile'. –

+0

Я изменил хост по умолчанию на cscript и использовал «ftype VBSFile», но я не видел cscript.exe в качестве вывода «ftype VBSFile» .. См. Раздел «Редактировать» в редакции – Magg

+0

Ditto - ftype, похоже, не работает для этого в Windows 7 и всегда возвращает команду для WScript.exe. –

ответ

0

How Can I Determine the Default Script Host on a Computer Before I Run a Script?

Const HKEY_CLASSES_ROOT = &H80000000 
strComputer = "." 
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") 
strKeyPath = "VBSFile\Shell\Open\Command" 
objRegistry.GetExpandedStringValue HKEY_CLASSES_ROOT,strKeyPath,vbNullString,strValue 
strValue = LCase(strValue) 
Wscript.Echo strValue 
If InStr(strValue, "wscript.exe") then 
    Wscript.Echo "WScript" 
Else 
    Wscript.Echo "CScript" 
End If 
+0

Я проверил вручную в реестре, но он показывает значение «% SystemRoot% \ System32 \ WScript.exe» «% 1»% * ..... Но я решил запустить его как cscript .. Поэтому он должен показывать значение как cscript. Exe ? – Magg