2010-12-01 2 views
0

HKLM 브랜치의 기존 레지스트리 값을 아무 문제없이 읽을 수있는 Silverlight 4 응용 프로그램이 있지만 새 값을 추가하면 a 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

Windows의 32 비트 버전에서는 정상적으로 작동합니다. Windows의 64 비트 버전은 레지스트리에 대한 다른 견해를 가지고 있습니다. 레지스트리의 Wow6432Node 키 아래에 내 키를 추가하면 문제가 해결되었습니다.

관련 문제