Tôi cần đọc vị trí của thư mục Tệp ASP.NET Tạm thời từ VBScript như một phần của tác vụ sau khi cài đặt trong trình cài đặt được tạo bằng cách sử dụng dự án triển khai Visual Studio 2008.Làm cách nào để đọc các giá trị đăng ký 64 bit từ VBScript đang chạy dưới dạng tác vụ sau khi cài đặt msi?
Tôi nghĩ tôi sẽ làm điều gì đó như thế này:
Set oShell = CreateObject("Wscript.Shell")
strPath = oShell.RegRead("HKLM\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0\Path")
và sau đó nối strPath với "\ Temporary ASP.NET Files" và được thực hiện với nó.
Trên hệ thống x64, tuy nhiên, tôi nhận được giá trị từ WOW6432Node (HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ ASP.NET \ 2.0.50727.0), cung cấp cho tôi đường dẫn khung 32 bit (C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727), nhưng trên một hệ thống x64, tôi thực sự muốn đường dẫn 64-bit, tức là C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727.
Tôi hiểu rằng điều này xảy ra vì tệp .vbs được chạy bằng máy chủ tập lệnh 32 bit do quy trình gốc (trình cài đặt) là bản thân 32 bit.
Làm cách nào để chạy tập lệnh bằng máy chủ tập lệnh 64 bit - hoặc - làm cách nào tôi có thể đọc các giá trị 64 bit ngay cả khi tập lệnh được chạy bằng máy chủ tập lệnh 32 bit?
Bạn làm như thế nào, nhưng chỉ để xác minh khóa chứ không phải giá trị ?? (Ví dụ: xem "SOFTWARE \ Microsoft \ ASP.NET \ 2.0.50727.0" tồn tại nhưng không phải là giá trị "Đường dẫn" –
@ DaniellePaquette-Harvey: Bạn cần gọi ['EnumKey'] (http://msdn.microsoft. com/en-us/library/aa390387.aspx) thay vì 'GetStringValue' (với các tham số thích hợp) và kiểm tra xem' oOutParams.ReturnValue' là 0. Ngoài ra, hãy xem câu trả lời trong câu hỏi này: [Kiểm tra xem khóa registry tồn tại] (http : //stackoverflow.com/q/9604276/113116) – Helen