2011-12-23 11 views
6

W aplikacji systemu Windows, którą mam, dokonuję pewnych zmian w rejestrze, takich jak usuwanie określonego klucza, w niektórych scenariuszach testowych, jak w maszynie Vista z zainstalowanym UAC, otrzymuję System.UnauthorizedAccessException . Mój kod będzie wyglądał tak:Jak radzić sobie z UnauthorizedAccessException z kodu użytkownika

try 
{ 
    //delete registry keys 
} 
catch (UnauthorizedAccessException ex) 
{ 
    //handling 
} 
catch (Exception genEx) 
{ 
    //handling 
} 

ale aplikacja będzie nadal iść upaść, nie są obsługiwane przez blok catch.. Czy jest jakiś sposób, bym sobie z tym poradził?

+0

Czy na pewno kod powodujący awarię aplikacji znajduje się w instrukcji try? –

+0

http://www.codeproject.com/KB/vista-security/MakingAppsUACAware.aspx –

+0

Musisz być w stanie złapać ten wyjątek. Może mógłbyś dać nam więcej kodu (mam na myśli przynajmniej wywołanie, które wyrzuca wyjątek), aby pomóc to naprawić. – ken2k

Odpowiedz

1

Prawdopodobnie rzucasz kolejny wyjątek z bloku catch. Spróbuj skomentować wszystkie linie w bloku catch i powinno działać dobrze.

+0

+1 proszę opracować trochę, wreszcie to była ** poprawna ** odpowiedź i @ niranjan może/powinien to zaakceptować! –

+0

Znalazłem ten problem w dniu opublikowania pytania i dodałem go jako komentarz ... Zapomniałem oznaczyć go jako odpowiedź .. :(Przepraszam ... jeśli to spowodowało zamieszanie :) @Adriano: Podziękowania za przypomnienie. Zaznaczę to jako odpowiedź .. :) – Niranjan

0

Najczęstszym i oczywistym powodem jest to, że ścieżka/program próbuje uzyskać dostęp, nie ma dostępu do tożsamości, pod którą działa.

Czytaj więcej tutaj na MSDN

+0

dlaczego -1? Czy ktoś może do tego mówić? – Baljeetsingh

+0

+1 .. Tak, to był problem .. Dodałem komentarz w samym pytaniu .. chociaż nie dodałem jako odpowiedzi i oznaczyłem ją :(.. – Niranjan

+0

Nie zauważyłem komentarza, ale oznaczenie może pomóc innemu użytkownik szukający właściwej odpowiedzi ... – Baljeetsingh

0

trzeba ustawić administratora dostęp do swojej aplikacji

dla tej właśnie prawym przyciskiem myszy i wybierz Właściwości

i sprawdzić Uruchom jako czeku administratora i uruchomić aplikację

, aby uruchomić jako administrator dla wszystkich użytkowników, kliknij przycisk wszystkich użytkowników i wybierz opcję Uruchom jako administrator dla wszystkich użytkowników, to zawsze będzie uruchamiać Twoją aplikację z dostępem administracyjnym dla wszystkich użytkowników.

enter image description here

Powiązane problemy