2013-11-04 17 views
5

Bất cứ ai có thể cho tôi biết lý do tại sao tôi không thể truy cập khóa đăng ký của "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData"?truy cập HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion Installer UserData

nếu tôi truy vấn GetSubKeysNames của "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer", nó chỉ trả về một giá trị là "Secure" ----> Tất cả các khóa con khác ở đâu?

Cảm ơn.

+1

Vui lòng đăng một vài dòng mã. Làm thế nào để bạn xây dựng thể hiện RegistryKey của bạn? – helb

+1

Câu hỏi thực sự là "Tại sao bạn lại cố truy cập khoá đăng ký 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData'?" Thông tin đó là dữ liệu hệ điều hành nội bộ. –

Trả lời

12

Tỷ lệ cược cao mà bạn đang chạy chương trình của mình trên phiên bản Windows 64 bit và buộc phải chạy ở chế độ 32 bit. Trình chuyển hướng đăng ký sẽ làm cho bạn thực sự đọc các khóa trong HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node. Và vâng, cái đó cũng có khóa Microsoft \ Windows \ CurrentVersion \ Installer nhưng nó khá trống. Sử dụng Regedit.exe để so sánh.

Cách khắc phục đơn giản nhất là xóa buộc. Dự án + Thuộc tính, tab Xây dựng, đặt cài đặt Nền tảng mục tiêu thành AnyCPU. Nếu bạn có VS2012 trở lên thì hãy bỏ chọn tùy chọn "Ưu tiên 32 bit". Lặp lại cho cấu hình Release. Nếu bạn phải chạy ở chế độ 32 bit, thì bạn có thể sử dụng phương thức .NET 4+ RegistryKey.OpenBaseKey(), đi qua RegistryView.Registry64.

Các vấn đề liên quan