Domanda

Abbiamo un'applicazione legacy che accede al Registro di sistema. Poiché si tratta di un'applicazione a 32 bit che accede al Registro di sistema in Windows 7 tramite la virtualizzazione del Registro di sistema quando si fa riferimento HKEY_LOCAL_MACHINE \ Software. La mia domanda è che cosa impostazione (s) in Visual Studio abbiamo bisogno di modificare per compilare le nostre applicazioni in cui accedono al Registro di sistema "normalmente" senza passare attraverso la virtualizzazione del Registro di sistema?

È stato utile?

Soluzione 3

La soluzione era quella di compilare l'applicazione legacy di indirizzare x64. Un'applicazione che si rivolge esplicitamente x64 non sarà soggetto alla virtualizzazione Registro di sistema.

Altri suggerimenti

Se avete letto la pagina del registro di virtualizzazione da vicino, si noterà che la virtualizzazione non è limitata a 64 bit di Windows. Si afferma soltanto che solo i processi a 32 bit saranno virtualizzati. Ma la virtualizzazione è fatto su entrambi a 32 e 64 bit di Vista e versioni successive. Così il titolo della domanda e il tag x64 sono un po 'fuorviante.

Per rispondere alla tua domanda, la stessa pagina dice: "La virtualizzazione del Registro di sistema è disabilitata per i seguenti:. ... processi che hanno requestedExecutionLevel specificato nei manifesti"

Quindi, è possibile disattivare la virtualizzazione con l'aggiunta di un file manifesto per il vostro eseguibile che specifica il livello di esecuzione. C'è almeno un articolo della Microsoft KB per come farlo in Visual Studio 2005: http: // support. microsoft.com/kb/944276 .

Perché non si utilizza:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\...");
return (string)key.GetValue("blah");

e aggiungere l'accesso al Registro di sistema nel file customtrust.config.

o non lo fa che il lavoro in Windows 7?

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