2009-08-24 7 views
4

Im Kontext einer verallgemeinerten .NET-basierten Komponente, die in einer Vielzahl von Szenarien gehostet werden kann - dh 64 Bit oder nicht, interaktiver Prozess oder nicht, muss ich in die Registrierung in einem schreiben Bereich, der UAC-Virtualisierung unterliegt. Ich möchte jedoch verhindern, dass ein solcher Zugriff virtualisiert wird, damit jede Ausführung nicht den Launen des gegenwärtigen Kontexts unterliegt (dh, nicht eine Lesung von HKLM haben möchte, da sie ein Manifest hat und die andere von HKCU. .VirtualStore, weil es nicht funktioniert).Registry-Virtualisierung programmgesteuert hemmen

Mit anderen Worten, ich suche nach something analogous to KEY_WOW64_64KEY oder reg.exe REG_KEY_DONT_VIRTUALIZE, um anzuzeigen, dass ich unter keinen Umständen virtualisiert werden möchte. Oder gibt es eine Form der kanonisationsbezogenen Syntax, die ich verwenden kann, um sie so zu erzwingen, wie Sie einen> 260 Char-Dateinamen angeben?

Mir geht es gut mit dem Code fehlschlägt, wenn der ausführende Benutzer nicht über entsprechende Berechtigungen für den betreffenden Registrierungsschlüssel verfügt.

Diese Frage ist stark im Zusammenhang mit [dieser Frage auf Erkennung Registrierungsvirtualisierung] (Detecting registry virtualization), aber auf jeden Fall nicht genug ist in diesem Zusammenhang zu erkennen.

Antwort

0

Anwendungen mit einem UAC-aware-Manifest, unabhängig davon, ob asInvoker oder requireAdministrator angegeben ist, werden nicht virtualisiert. Wenn Sie damit fertig sind, gehen Sie mit asInvoker.

+0

Hallo Kate, danke für die Antwort. Leider ist der Vorbehalt in der Frage ["im Kontext einer verallgemeinerten Komponente"] vorhanden, um anzuzeigen, dass dies außerhalb meiner Kontrolle liegt, daher meine Frage. –

+0

Aber ich wette, Sie haben Antworten auf viele meiner anderen offenen esoterischen Fragen nur darauf warten, herausspringen - wenn Ihre DNR-Eps sind etwas zu gehen: D –

+0

Oh Schatz, Sie müssen möglicherweise in COM Elevation Moniker Territorium. Ich bin mir nicht sicher, was das .NET-Äquivalent ist, wenn es eins gibt. –