Dostęp do rejestru w Windows 7

0

Witam, napisałem prosty programik który dodaje pewne klucze i wartości do rejestru. Podczas uruchamiania na Windows 7 na koncie innym niż wbudowane konto Administrator (nawet jeśli konto np. User dodam do grupy Administratorzy), pojawia się błąd związany z próbą dostępu do rejestru. Czy jest możliwość obejścia tego problemu w kodzie programu ?? Nie chodzi mi o obsługę wyjątku z jakimś komunikatem, tylko dodanie danych do rejestru.

0

Czyli co, prosisz o podanie jakiegoś exploita na podniesienie uprawnień?
Bez administratora się nie obejdzie.

0

Ok, czyli pozostaje poinformowanie Usera że ma skontaktować się z Administratorem :)

1

Zawsze użytkownik może uruchomić program jako administrator.

0

Z tym, że ten program będzie odpalał się automatycznie, czy można ustawićw opcjach kompilacji aby uruchamiał się jako Administrator automatycznie ?
Co jeśli wbudowane konto Administratora nie jest włączone, a domyślnie nie jest w Windows 7 ?
(Oczywiście rozumiem, że w takim przypadku będzie wymagał podania i tak hasła administratora.)

0

Nie da się zrobić takich opcji kompilatora, ponieważ twój problem nie jest programistyczny, a administracyjny.

Możesz za to utworzyć link do programu:
C:\WINDOWS\system32\runas.exe /u:nazwa_uzytkownika /savecred "C:\sciezka\do\programu.exe"

Wtedy o hasło zapyta tylko przy pierwszym odpaleniu.
Dziwi mnie tylko, skąd u ciebie problemy, jeżeli użytkownik ma uprawnienia administracyjne. Ja u siebie mam i jeszcze nigdy nie zdarzyło mi się, żeby mi komputer odmówił zrobienia czegoś z rejestrem.

0

Jako że błąd wykryłem testując wstepnie ten programik u siebie, utworzyłem Virtualke z czystą instalacją Windows 7, przy instalacji zostało utworzone podstawowe konto użytkownika, które standardowo znalazło się w grupie administratorzy. Z konta tego moge odpalić edytor rejestru, dodać klucze, wartości itd. Natomiast jak korzystam z programu który napisałem, i który dodaje jeden klucz i kilka wartości do niego, pojawia się błąd : "System.Security.SecurityException: Żądany dostęp do rejestru jest niedozwolony."

1
  1. Czy jako ten konkretny użytkownik możesz dodać te konkretne wartości w rejestrze, których nie może program?
  2. Czy otwierasz klucz w odpowiednim trybie?
key = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Office\\11.0\\Common\\General", **RegistryKeyPermissionCheck.ReadWriteSubTree**);

edit: Te gwiazdeczki to niby pogrubienie miało być :/

1

Przy domyślnych ustawieniach systemu, nawet jeżeli ktoś jest w grupie administratorów, nie znaczy to, że ma takie uprawnienia. UAC.

0

Otwieram w odpowiednim trybie, na wbudowanym koncie administratora wszystko działa.
Z poziomu Usera w grupie Administratorzy mogę dodawać klucze i wartości ręcznie - te co ma dodawać program, natomiast program wyrzuca błąd.
Zdaje sobie sprawę że będąc w grupie administratorzy nie ma uprawnień pełnego roota. Dziwi fakt, że użyte metody platformy .NET do obsługi rejestru sobie nie radzą z tym, a ręcznie jak widać jest na tym koncie i z tymi uprawnieniami taka możliwość.

0

Dodaj manifest do projektu programu i kombinuj z ustawieniami w tym pliku.

0

Jedną z opcji jest: http://msdn.microsoft.com/en-us/library/bb756929.aspx i ustawienie
<requestedExecutionLevel level="requireAdministrator" ... />

0

Pytanie - czy musisz je dodawać tam gdzie to robisz? Bo np. w HKEY_CURRENT_USER możesz grzebać bez uprawnień, jeśli chcesz po prostu aby twój program przechowywał pewne swoje dane (jakieś ustawienia) w rejestrze to powinieneś użyć tej gałęzi. W szczególności kluczaHKCU/Software/nazwa_twojego_programu

Co to w ogóle za klucze?

Jeśli musisz użyć HKLM to może wystarczy podczas instalacji programu? Wtedy instalator poprosi o uprawnienia administratora, a z już zainstalowanego programu będzie mógł korzystać zwykły użytkownik.

Nie żądaj uprawnień administratora jeśli nie są potrzebne! Chodzi przede wszystkim o bezpieczeństwo (tak, dziury twojego programu mogą umożliwić hakerowi włamanie) oraz o to aby z programu można było skorzystać nie będąc administratorem (w firmie, szkole ...).

1 użytkowników online, w tym zalogowanych: 0, gości: 1