2010-05-07 13 views
6

Mam aplikacji, która ma czytać z rejestru i podczas wykonywania aplikacji konsoli mój dostęp do rejestru działa doskonale.Czy program Visual Studio uruchamia testy z mniej uprzywilejowanym procesem?

Jednakże gdy przenieść go do testu to zwraca null:

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

Więc moje pytanie brzmi:

Czy Visual Studio uruchomić testy z mniej uprzywilejowanych procesie?

Przetestowałem, aby zobaczyć, co użytkownik mi dał: var x = WindowsIdentity.GetCurrent().Name; i daje mi to samo, co w aplikacji konsoli. Więc jestem trochę zdezorientowany.

Używam MS Test Framework, a maszyna ma system Windows 2003 w wersji 64-bitowej.

Odpowiedz

1

To nie jest kwestia bezpieczeństwa. To fakt, że używasz 64-bitowego systemu operacyjnego. 64-bitowe aplikacje mają inny widok HKLM \ Software niż aplikacje 32-bitowe. 64-bitowe aplikacje uzyskują "normalny" widok, 32-bitowe aplikacje są przekierowywane do HKLM \ Software \ Wow6432Node. EXE określa bit-ness procesu, będzie inny, gdy mstest uruchomi kod. Prawdopodobnie 32-bitowy.

Musisz utworzyć klucz, który próbujesz odczytać w drzewie Wow6432Node. Lub spraw, aby zwykła aplikacja miała tę samą bit-ność, Project + Properties, kartę Build, Platform Target = x86. Można również zmieniać w locie za pomocą Corflags.exe.

+0

Jak to działa kiedy zbudować aplikację konsoli dla „Dowolny procesora”, a następnie? –

+1

@Filip, Dowolny procesor * jest * problemem, który uruchamia kod w trybie 64-bitowym. Twój test działa w trybie 32-bitowym. Prawdopodobnie istnieje wersja hosta mstest, który może uruchomić kod w trybie 64-bitowym, o którym nie ma wystarczającej wiedzy. –

+1

Zobacz ten wpis na blogu: http://blogs.msdn.com/danielvl/archive/2009/03/28/run-mstest-exe-as-native-64-bit-process.aspx –

-1

Powiedziałbym tak. Dlaczego oczekujesz czegoś innego? Musiałby to być sposób zgodny z logo Windows. Jest to również dobre z punktu widzenia bezpieczeństwa. Visual Studio .NET jest zgodny z logo Windows, więc można się spodziewać, że działa on jako ograniczonego użytkownik

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

Powiązane problemy