Tôi đang tạo một tác vụ MSBuild sẽ đọc sổ đăng ký cho một khóa đăng ký cụ thể. Nếu tôi viết cùng một dòng mã (xem bên dưới) trong một ứng dụng giao diện điều khiển, nó trả về kết quả mong đợi, nhưng khi nó nằm trong nhiệm vụ MSBuild, nó sẽ không trả về gì cả.Làm thế nào để bạn đọc một giá trị đăng ký bằng cách sử dụng một nhiệm vụ msbuild tùy chỉnh?
Return Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\", "SQLPath", Nothing)
Tôi mong đợi mã trên trả về Nothing
nếu cặp khóa/giá trị không tồn tại và trả về giá trị nếu nó tồn tại. Tôi nhận được Nothing
khi tác vụ MSBuild được thực hiện. Có một số thuộc tính mà tôi cần phải áp dụng cho các Execute chức năng của nhiệm vụ MSBuild để nói với nó rằng nó cần phải đọc registry?
EDIT:
Dưới đây là những gì đã được thực hiện từ các nhiệm vụ MSBuild:
Return Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSSQLServer\Setup\", "SQLPath", Nothing)
Tôi tin này được gây ra bởi sự Registry Redirector trên máy Vista x64 của tôi chạy MSBuild trong 32bit. Có cách nào mà bạn có thể nói với nhiệm vụ MSBuild tùy chỉnh (được viết bằng VB .Net) để xem trong HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\
sau đó chỉ khi không có gì tồn tại ở đó thì hãy xem trong HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSSQLServer\Setup\
?
Cảm ơn bạn,
Scott xanh
bạn đã thử một công cụ như RegMon để đảm bảo rằng bạn đang đọc đúng khóa đăng ký khi nó được nhấn từ MSBuild? Có thể là một số tiếng leng keng 32-bit/64-bit đang diễn ra? –
Suy nghĩ tốt, tôi sẽ xem xét ... – Scott
Vì vậy, 'RegMon' được thay thế bằng' Process Monitor' và nó báo cáo rằng khi tôi sử dụng ứng dụng giao diện điều khiển để đọc sổ đăng ký, nó đã được đọc thành công qua TestingRegistry. exe (Tên chương trình). Nhưng khi tôi chạy tác vụ, nó sử dụng chương trình devenv.exe làm ứng dụng gọi và thực sự đang cố gắng mở khóa này: 'HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSSQLServer \ Setup' và nhận lỗi' NAME NOT FOUND'. Tại sao nó sẽ thêm vào một phần tử 'Wow6432Node' vào đường dẫn? – Scott