2010-05-07 17 views
6

Tengo una aplicación que se supone que debe leer el Registro y al ejecutar una aplicación de consola mi acceso de registro funciona perfectamente.¿Visual Studio ejecuta pruebas con un proceso menos privilegiado?

Sin embargo, cuando lo muevo a una prueba de esto devuelve null:

var masterKey = Registry.LocalMachine.OpenSubKey("path_to_my_key");

Así que mi pregunta es:

pruebas

¿Tiene Visual Studio carrera con un proceso menos privilegiado?

Probé para ver qué usuario me dio esto: var x = WindowsIdentity.GetCurrent().Name; y me da lo mismo que en la aplicación de la consola. Así que estoy un poco confundido aquí.

Estoy usando MS Test Framework y la máquina es Windows 2003 64 Bit.

Respuesta

1

No es un problema de seguridad. Es el hecho de que se está ejecutando en un sistema operativo de 64 bits. Las aplicaciones de 64 bits tienen una vista diferente de HKLM \ Software que las aplicaciones de 32 bits. Las aplicaciones de 64 bits obtienen la vista "normal", las aplicaciones de 32 bits se redirigen a HKLM \ Software \ Wow6432Node. El EXE determina la bit-ness del proceso, será diferente cuando mstest ejecuta el código. 32 bits, probablemente.

Tendrá que crear la clave que está tratando de leer en el árbol Wow6432Node. O haga que la aplicación normal tenga el mismo bit-ness, Project + Properties, pestaña Build, Platform Target = x86. También se puede cambiar sobre la marcha con Corflags.exe.

+0

¿Cómo es que funciona cuando construyo una aplicación de consola para "Cualquier CPU", entonces? –

+1

@Filip, Cualquier CPU * es * el problema, que ejecuta el código en modo de 64 bits. Su prueba se ejecuta en modo de 32 bits. Probablemente exista una versión del host mstest que pueda ejecutar el código en modo de 64 bits, no sé lo suficiente al respecto. –

+1

Revisa esta publicación del blog: http://blogs.msdn.com/danielvl/archive/2009/03/28/run-mstest-exe-as-native-64-bit-process.aspx –

-1

Yo diría que sí. ¿Por qué esperas algo diferente? Debería ser de esta manera para ser compatible con el logotipo de Windows. También es bueno desde el punto de vista de la seguridad. Visual Studio .NET es compatible con logotipo de Windows, por lo que se puede esperar que se ejecute como un usuario restringido

http://blogs.msdn.com/vcblog/archive/2006/09/06/742187.aspx

Cuestiones relacionadas