Die Erkennung von registry-Virtualisierung

Habe ich eine Reihe von C# (v2) - apps, und ich bin kämpfen, mit der registry-Virtualisierung in Win7 (und in geringerem Maße auch Vista).

Ich habe einen shared-registry-Konfiguration-Bereich "meine Anwendungen" zugreifen zu können, müssen in HKLM\Software\Company... Vor Vista war alles nur geschrieben und gelesen von diesem Ort aus, wie gebraucht.

Den code entsprechend erkannten Fehler zu schreiben, dass registry-Schlüssel und würde wieder fallen, angemessen (das schreiben in HKCU statt und informiert den Benutzer, dass die Einstellungen, die Sie angewandt hatte, würde nur auf den aktuellen Benutzer).

In Vista, registry-Virtualisierung brach dies alles, weil die access-check wurden wir mit der HKLM schreiben würde "erfolgreich" still und Virtualisierung zur HKCR\VirtualStore\Machine... statt. In diesem Fall würde der Benutzer denken, dass Sie gerettet hatte, Maschinenweite Konfiguration, aber hatte stattdessen nur geschrieben, um den virtuellen Speicher.

Leider auch nur zu versuchen, zum auflisten der Berechtigungen auf der reg-Schlüssel HKLM explizit gibt Ergebnisse zurück, die angibt, dass der Benutzer Zugriff hat, ob Sie es tun oder nicht.

Wenn wir Hinzugefügt Vista-Unterstützung, die Problemumgehung, die wir verwendet wurde, war zum durchführen einer probe in HKLM schreiben,... und dann schauen Sie in HKCR\VirtualStore\Machine... für den gleichen Wert, und beachten Sie, dass die Virtualisierung stattgefunden hatte, wenn der Wert gefunden wurde.

Win7 scheint gebrochen zu haben, diese (wieder) da Abfragen gegen den ausdrücklichen virtuellen Standort (HKCR) zeigen nun zusammengeführten Ergebnisse aus der HKLM Lage, auch wenn das schreiben war nicht virtualisiert.

Hat jemand irgendwelche Vorschläge für die Arbeit dieses?

Einschränkungen:
- Ich brauche eine Lösung, die funktioniert, ohne dass die Höhe (wenn ich das nicht über administrator-Berechtigungen werde ich den fallback auf einer pro-Benutzer-Konfiguration, die in HKCU, aber ich muss in der Lage sein, zu erkennen, in diesem Fall zuverlässig).

  • Es braucht, um zu arbeiten mit einem v2 C# app (Eine option, die ich gesehen habe für C++ - code einbetten, ein manifest, die deaktiviert Virtualisierung für die .exe aber ich habe nicht in der Lage zu tun, dass in C# V2 siehe deaktivieren Sie die Ordner-Virtualisierung in windows).

  • Es braucht, um zu arbeiten, ohne ein "installer" (dies schließt die Fähigkeit zu deaktivieren Virtualisierung auf die registry-Schlüssel, die wir brauchen, ala die REG FLAGS... - Befehl).

  • Haben Sie versucht, zu verwenden boxedapp? Es kann helfen. Viel Glück!
  • Sie verwenden sollten, boxedapppacker oder boxedapp. Itemulate system-registry für eine Anwendung.
Schreibe einen Kommentar