2011-09-09 37 views
5

Vì vậy, tôi sử dụng RegEdit để thêm dòng sau vào registry trên máy trạm của tôi:Tôi đã thêm một khóa registry, nhưng tôi không thể tìm thấy nó lập trình

HKLM \ Software \ Foo \ Bar

Bar có ak/v cặp "wtf"/"idk". Tôi đã xác minh rằng những thay đổi này "đã" bằng cách đóng regedit và mở lại nó. Này, chúng vẫn ở đó! Sưng lên.

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar"); 

if (key != null) 
{ 
    var = key.GetValue("wtf").ToString(); 
} 

Vấn đề là, khóa là null.

Khi nào. . .

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames() 

Được gọi, Foo không hiển thị trong số nhiều SubKeyNames.

Vì vậy, tôi rõ ràng là thiếu cái gì đó ngu ngốc. Tôi thiếu gì đặc biệt?

Trả lời

10

Nếu bạn đang chạy quy trình 32 bit trên phiên bản 64 bit của Windows, quy trình 32 bit (ứng dụng thử nghiệm của bạn) không phải lúc nào cũng có thể xem các khóa bạn đã tạo bằng regedit 64 bit.

Thử chạy ứng dụng của bạn dưới dạng 64 bit hoặc sử dụng regedit để mở khóa bằng đường dẫn HKLM\SOFTWARE\Wow6432Node\Foo\Bar.

Bạn có thể đọc thêm về 32-bit and 64-bit application data in the registry trên MSDN.

+0

Bạn và Reizebosch là chính xác; đó là một hệ điều hành x64 nhưng chương trình đang chạy như một ứng dụng 32 bit, và nó đã được đọc từ Wow6432Node. – peacedog

4

Có thể là sự cố x64? Khi đọc từ registry trong quá trình x86, bạn sẽ được chuyển hướng đến Software \ Wow6432node.

1

Hãy thử mở nó để chỉ đọc Registry.LocalMachine.OpenSubKey("Software", false).GetSubKeyNames() có thể bạn chỉ nhận được những thứ bạn có thể ghi vào.

+0

Tôi đã không đề cập đến nó trong câu hỏi nhưng các điều khoản là 5x5; Tôi có thể viết vào chìa khóa. – peacedog

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