2010-12-01 2 views
0

J'ai une application Silverlight 4 dans laquelle je peux lire les valeurs de registre existantes de la branche HKLM sans problème mais si j'ajoute une nouvelle valeur, la lecture échoue avec un FileNotFoundException. Vous pouvez voir dans le code ci-dessous; la première lecture fonctionne correctement mais la seconde ne parvient pas à lire la valeur de test que j'ai ajoutée dans le registre.Silverlight 4 WScript.RegRead ne parvient pas à lire la nouvelle valeur ajoutée dans le registre sous Windows 7

REMARQUE: Je suis capable de lire la nouvelle clé ajoutée sous Windows XP; juste pas sous Windows 7.

Toute aide serait grandement appréciée.

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)); 
     } 
    } 
} 

Répondre

1

Travaillé correctement sous la version 32 bits de Windows. Il s'avère que la version 64 bits de Windows a une vue différente du registre. L'ajout de ma clé sous la clé Wow6432Node dans le registre a résolu le problème.