将VBScript代码转换为javascript(即JScript)代码

时间:2014-11-13 10:49:07

标签: javascript vbscript jscript

我们如何将以下vbscript转换为javascript?

<script type="text/vbscript">

  Function SayHello()
    MsgBox "Hello"

HKEY_LOCAL_MACHINE = "&H80000002"
uninstallRegKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
stdRegPro = "winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv"

Set objReg=GetObject(stdRegPro)

objReg.EnumKey HKEY_LOCAL_MACHINE, uninstallRegKey, arrSubKeys
MsgBox arrSubKeys

  End Function

</script>

任何帮助表示感谢。

谢谢, 乐。

2 个答案:

答案 0 :(得分:2)

如果您使用JScript(Microsoft的Javascript for Windows实现)和某些信息,您可以这样做。

  1. Calling WMI Methods with JScript
  2. Troubles with WMI in JScript
  3. (通过谷歌搜索&#34; jscript wmi&#34;)。

    证据:

    function showUnInstall() {
        var HKEY_LOCAL_MACHINE = 0x80000002;
        var uninstallRegKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
        var stdRegPro = "winmgmts:{impersonationLevel=impersonate}!//./root/default:StdRegProv";
        var objReg = GetObject(stdRegPro);
    
        var mEnumKey = objReg.Methods_.Item("EnumKey");
        var ipEnumKey = mEnumKey.InParameters.SpawnInstance_();
        ipEnumKey.hDefKey = HKEY_LOCAL_MACHINE;
        ipEnumKey.sSubKeyName = uninstallRegKey;
    
        var mGetStringValue = objReg.Methods_.Item("GetStringValue");
        var ipGetStringValue = mGetStringValue.InParameters.SpawnInstance_();
        ipGetStringValue.hDefKey = HKEY_LOCAL_MACHINE;
        ipGetStringValue.sValueName = "DisplayName";
    
        var opEnumKey = objReg.ExecMethod_(mEnumKey.name, ipEnumKey);
        if (0 === opEnumKey.ReturnValue) {
            var aNames = opEnumKey.sNames.toArray();
            for ( var i = 0; i < aNames.length; ++i) {
                ipGetStringValue.sSubKeyName = uninstallRegKey + "\\" + aNames[i];
                var opGetStringValue = objReg.ExecMethod_(mGetStringValue.name, ipGetStringValue);
                if (0 === opGetStringValue.ReturnValue) {
                    WScript.Echo(opGetStringValue.sValue);
                } else {
                    WScript.Echo("ERROR: GetStringValue.ReturnValue =", opGetStringValue.ReturnValue);
                }
            }
        } else {
            WScript.Echo("ERROR: EnumKey.ReturnValue =", opEnumKey.ReturnValue);
        }
    }
    

    输出:

    cscript 26907078.js
    7-Zip 4.65
    ActiveState ActiveTcl 8.5.2.0
    ERROR: GetStringValue.ReturnValue = 1
    Adobe Flash Player 15 Plugin
    ERROR: GetStringValue.ReturnValue = 1
    CMake 2.8, a cross-platform, open-source build system
    Acrobat.com
    ...
    

答案 1 :(得分:1)

你不能。 Javascript无权访问注册表。


我记得这不完全准确。在带有NPM工具的Windows上运行的Node.js网络服务器确实可以访问,但只能访问它运行的服务器上的访问权限。但是,客户端javascript无权访问注册表。