2015-03-20 21 views
5

Tôi cố gắng thêm khóa vào sổ đăng ký nếu không tồn tại. Trong khi tôi gỡ lỗi mọi thứ đều ổn. Mã nên hoạt động. Nhưng tôi không thể tìm thấy chìa khóa trong trình soạn thảo đăng ký. Bạn còn ý kiến ​​nào không?Thêm khóa vào sổ đăng ký nếu không tồn tại

public void ConfigureWindowsRegistry() 
{ 
    var reg = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Office\\Outlook\\FormRegions\\tesssst", true); 
    if (reg == null) 
    { 
     reg = Registry.LocalMachine.CreateSubKey("Software\\Microsoft\\Office\\Outlook\\FormRegions\\tesssst"); 
    } 

    if (reg.GetValue("someKey") == null) 
    { 
      reg.SetValue("someKey", "someValue"); 
    } 
} 

Trả lời

7

Nếu bạn đang sử dụng hệ điều hành 64 bit, một số khóa đăng ký được WOW64 chuyển hướng. Thông tin thêm về chủ đề này có sẵn trên MSDN, bạn nên xem dưới Wow6432Node và bạn sẽ tìm thấy mục nhập của bạn. Nếu bạn thực hiện mã lần đầu tiên nó sẽ tạo ra, trên một máy 64 bit (Tôi đã thử nó tại địa phương), cụm từ này:

HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ Office \ Outlook \ FormRegions \ tesssst

nếu bạn muốn truy cập phần 64 bit lại registry bạn nên làm:

public void ConfigureWindowsRegistry() 
{ 
    RegistryKey localMachine = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64); //here you specify where exactly you want your entry 

    var reg = localMachine.OpenSubKey("Software\\Microsoft\\Office\\Outlook\\FormRegions\\tesssst",true); 
    if (reg == null) 
    { 
     reg = localMachine.CreateSubKey("Software\\Microsoft\\Office\\Outlook\\FormRegions\\tesssst"); 
    } 

    if (reg.GetValue("someKey") == null) 
    { 
     reg.SetValue("someKey", "someValue"); 
    } 
} 

thực thi các mã trên sẽ đưa chìa khóa registry trong phần chính xác bạn đang nhắm mục tiêu.

hy vọng điều đó sẽ hữu ích.

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