Ich muss den Speicherort des Ordners ASP.NET-Dateien aus VBScript als Teil einer Aufgabe nach der Installation in einem Installationsprogramm lesen, das mit einem Visual Studio 2008-Bereitstellungsprojekt erstellt wurde.Wie lese ich 64-Bit-Registrierungswerte aus VBScript, die als MSI-Nachinstallationsaufgabe ausgeführt werden?
Ich dachte, ich so etwas tun würde:
Set oShell = CreateObject("Wscript.Shell")
strPath = oShell.RegRead("HKLM\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0\Path")
und dann verketten strPath mit "\ Temporary ASP.NET Files" und mit ihr geschehen.
Auf einem x64-System erhalte ich jedoch den Wert aus dem WOW6432Node (HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ ASP.NET \ 2.0.50727.0), der mir den 32-Bit-Framework-Pfad gibt (C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727), aber auf einem x64-System möchte ich den 64-Bit-Pfad, dh C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727.
Ich verstehe, dass dies passiert, weil die .vbs-Datei mit dem 32-Bit-Skript-Host aufgrund des übergeordneten Prozesses (das Installationsprogramm) selbst 32-Bit ausgeführt wird.
Wie kann ich das Skript mit dem 64-Bit-Skript-Host ausführen - oder - Wie kann ich die 64-Bit-Werte lesen, selbst wenn das Skript mit dem 32-Bit-Skript-Host ausgeführt wird?
Wie tun Sie das, aber nur einen Schlüssel, um zu überprüfen, keinen Wert ?? (Bsp .: sehen Sie, ob "SOFTWARE \ Microsoft \ ASP.NET \ 2.0.50727.0" existiert, aber nicht den "Path" -Wert –
@ DaniellePaquette-Harvey: Sie müssen ['EnumKey'] (http://msdn.microsoft.com) aufrufen. com/de-us/library/aa390387.aspx) anstelle von 'GetStringValue' (mit entsprechenden Parametern) und prüfen, ob 'oOutParams.ReturnValue' 0 ist. Siehe auch Antworten in dieser Frage: [Überprüfen, ob der Registrierungsschlüssel existiert] (http : //stackoverflow.com/q/9604276/113116) – Helen