La détection de registre de virtualisation

J'ai un ensemble de C# (v2) apps et j'ai du mal avec le registre de la virtualisation dans Win7 (et dans une moindre mesure Vista).

Je partage un registre de configuration de la zone que mes applications ont besoin d'y accéder dans des HKLM\Software\Société... Avant de Vista, tout était écrit et de la lecture à partir de cet emplacement tant que de besoin.

Le code correctement détecté échecs à écrire à cette clé de registre et de se replier de façon appropriée (écrit à HKCU au lieu et en informant l'utilisateur que les paramètres qu'ils avaient appliqué affecte uniquement l'utilisateur actuel).

Dans Vista, registre de virtualisation cassé tout cela parce que le contrôle d'accès, nous avons été à l'aide de la clé HKLM d'écrire "réussir" dans le silence et la virtualisation de HKCR\VirtualStore\Machine... à la place. Dans ce cas, l'utilisateur pourrait croire qu'ils avaient sauvé l'échelle de l'ordinateur de configuration, mais cela avait seulement écrit dans le magasin virtuel.

Malheureusement, même en essayant d'énumérer les autorisations sur la clé de registre HKLM explicitement renvoie des résultats indiquant que l'utilisateur a accès qu'on le soit ou pas.

Lorsque nous avons ajouté le support de Vista, la solution que nous avons utilisée était d'effectuer une sonde écrire HKLM... et puis vérifier dans HKCR\VirtualStore\Machine... pour la même valeur et notez que la virtualisation a eu lieu si la valeur a été trouvé.

Win7 semble avoir cassé ce (nouveau), car les requêtes contre l'explicite emplacement virtuel (HKCR) montrons maintenant fusionné les résultats de l'emplacement HKLM même si l'écriture n'a pas été virtualisé.

Quelqu'un aurait-il des suggestions pour travailler autour de cela?

Contraintes:
- J'ai besoin d'une solution qui fonctionne sans nécessiter d'élévation (quand je n'ai pas des autorisations de niveau administrateur je vais secours à par-configuration de l'utilisateur dans HKCU mais j'ai besoin d'être en mesure de détecter ce cas de manière fiable).

  • Il doit travailler avec une v2 application en C# (Une option que j'ai vu, le code C++ est d'intégrer un manifeste qui désactive la virtualisation pour les .exe, mais je n'ai pas été en mesure de le faire en C# V2 voir désactiver dossier de virtualisation de windows).

  • Il a besoin de travailler sans un "programme d'installation" (ce qui exclut la possibilité de désactiver la virtualisation sur la clé de registre que nous avons besoin d'ala le REG DRAPEAUX... commande).

  • Avez-vous essayé d'utiliser boxedapp? Il peut aider. Bonne chance!
  • Vous devez utiliser boxedapppacker ou boxedapp. Itemulate de registre du système pour une application.