Domanda

Non ho difficoltà a capire la virtualizzazione VirtualStore delle operazioni Registro di sistema in Vista e / o Windows 7. pensavo cercando di scrivere qualcosa nella HKEY_LOCAL_MACHINE root durante l'esecuzione come utente standard sarebbe prompt di Windows per virtualizzare la il funzionamento e la scrittura a HKEY_CURRENT_USER / Corsi / VirtualStore / MACCHINA , invece. Ho visto diverse applicazioni meno recenti si comportano esattamente così.

Tuttavia, quando si cerca di replicare che il comportamento in C # e .Net4, l'operazione di scrittura a HKLM solo non riesce con un UnauthorizedAccessException , invece. C'è qualche modo per la virtualizzazione forza?

Per dare un contesto alla domanda: Sto cercando di leggere e manipolare le chiavi di registro originariamente creati da un'altra applicazione legacy. In Vista o Windows 7 questi saranno situati nella VirtualStore. Mi piacerebbe usare la stessa logica accesso al registro, sia per WinXP e al di sopra e ho pensato che le mie operazioni di registro sarebbe essere virtualizzati proprio come le operazioni da App legacy (e opererebbero sugli stessi tasti, a causa di questo). Questo non funziona come previsto e l'unica soluzione che conosco è quello di accedere specificamente il percorso VirtualStore, se l'utente è in esecuzione Vista o 7 e ha permesso UAC ... sembra brutto, però, soprattutto se Microsoft decide di cambiare la virtualizzazione comportamento nelle future versioni di Windows.

È stato utile?

Soluzione

L'articolo MSDN Registro di sistema di virtualizzazione in Windows Vista spiega che alcune classi dei processi hanno virtualizzazione disattivato:

  • 64 bit Processi
  • eseguibili che hanno un requestedExecutionLevel specificati nel manifesto
  • e alcuni altri; verificare l'articolo per i dettagli

Una o entrambe le prime due sono in genere vero per un'applicazione .NET (a causa del manifestarsi di default compilatore fornito). Si dovrebbe rimuovere il manifesto (in modo che il tuo aspetto dell'applicazione come un'applicazione legacy) al fine di consentire la virtualizzazione, ma questa sarebbe una cattiva idea (per gli attaccanti la compatibilità con Windows). Invece, basta supporre che l'applicazione non è virtualizzato su Vista (e versioni successive) e procedere di conseguenza.

Inoltre, l'articolo avverte che "Microsoft intende rimuovere questa forma di virtualizzazione da versioni future del sistema operativo Windows ... è indispensabile l'applicazione non prendere una dipendenza difficile sulla presenza della virtualizzazione nel sistema." Qualunque sia il codice che si scrive dovrebbe anticipare che la chiave VirtualStore potrebbe non esistere su una versione futura di Windows.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top