Força o WScript de 64 bits para executar .vbs

2

Estou tentando executar um script .vbs em 64Bit. Quando executo este script manualmente, ele será executado corretamente, mas quando iniciado por outra coisa, ele será executado com menos de 32 bits e não será executado adequadamente.

Aqui está meu script:

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run Chr(34) & "C:\Users\Chris Nicol\Documents\SlickRun Scripts\Zune\RunZune.bat" & Chr(34), 0
Set WshShell = Nothing

Basicamente eu quero forçar o uso de C:\windows\syswow64\cmd.exe , para que ele funcione corretamente. Eu não consigo acertar a sintaxe e não consigo encontrar ajuda sobre isso.

Aqui está o arquivo em lote e o arquivo regedit que estou tentando executar:

RunZune.bat:

@ECHO OFF

regedit /s FeaturesOverride.reg
"C:\Program Files\Zune\Zune.exe"

exit

FeaturesOverride.reg:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Zune\Features]
"Channels"="US,CA"
"MusicVideos"="US,CA"
"Picks"="US,CA"
"Podcasts"="US,CA"
"QuickMixLocal"="US,CA"
    
por Chris Nicol 25.07.2011 / 23:34

1 resposta

1

O código a seguir verificará se o sistema é 64Bit e, neste caso, fecha o script e reexecuta-o, forçando o Host de 64Bit chamando-o diretamente com o script como parâmetro.

If fso.FileExists("C:\Windows\SysWOW64\wscript.exe") Then
    If InStr(1, WScript.FullName, "SysWOW64", vbTextCompare) <> 0 Then ' = very basic 64bit check replace if you want a more sophisticated one
        newFullName = Replace(WScript.FullName, "SysWOW64", "Sysnative", 1, -1, vbTextCompare) ' System32 will be replaced by Sysnative. calls to sysnative bypass WoW64 emulation, cscript or wscript stays the same as they were
        newArguments = "" ' all arguments are given to the new script call
        For Each arg In WScript.Arguments
            newArguments = newArguments & arg & " "
        Next
        wso.Run newFullName & " """ & WScript.ScriptFullName & """ " & newArguments, , False
        WScript.Quit ' Close 32Bit scripting host
    End If
End If

Esta solução garante que o script seja executado em 64Bit, independentemente de quem o chamar. Se você tem uma situação onde você pode controlar a chamada (por exemplo, o script só é chamado através de um link específico) você provavelmente pode usar apenas o princípio básico (que é o sistema de arquivos inteligente redirecionador ) diretamente em seu atalho.

    
por 11.12.2014 / 16:56