2010-12-01 75 views
0

我有一個Silverlight 4應用程序,我可以從HKLM分支中讀取現有的註冊表值,但是如果我添加新值,一個FileNotFoundException。你可以在下面的代碼中看到;第一次讀取工作正常,但第二次讀取未能讀取我在註冊表中添加的測試值。Silverlight 4 WScript.RegRead無法在Windows 7中讀取註冊表中新增的值

注:我可以在Windows XP下讀取新添加的密鑰;只是不在Windows 7下。

任何幫助將不勝感激。

if (Application.Current.InstallState == InstallState.Installed && Application.Current.HasElevatedPermissions) 
{ 
    if (AutomationFactory.IsAvailable) 
    { 
     dynamic shell = AutomationFactory.CreateObject("WScript.shell"); 

     try 
     { 
      var resa = shell.RegRead(@"HKLM\SOFTWARE\Microsoft\.NETFramework\InstallRoot"); 
      var resb = shell.RegRead(@"HKLM\SOFTWARE\Microsoft\.NETFramework\Test"); 

      var regValue = shell.RegRead(DbTypeRegKeyName); 
      var dbType = ExtractDbTypeFromId(regValue); 
     } 
     catch (FileNotFoundException fileNotFoundException) 
     { 
      throw new Exception(string.Format("Failed to read registry value '{0}' with error '{1}'.", DbTypeValueName, fileNotFoundException)); 
     } 
    } 
} 

回答

1

在32位版本的Windows下工作正常。原來,64位版本的Windows有不同的註冊表視圖。在註冊表中的Wow6432Node項下添加我的密鑰解決了問題。