UAC, nie rozumiem

0

Człowiek sobie rozwija grzecznie to swoje oprogramowanie, nikomu krzywdy nie robi, łata bugi, utrzymuje, refaktoryzuje...
Aż tu nagle Microsoft wymyśla nowy system i wszyscy mają problem :/

Mój problem z pewnością wynika ze zwykłego braku zrozumienia, stąd proszę o informacje. Migracja jest na Windows Server 2008. Programy przenoszone są zarówno w C#, VBA, C++ (również Managed C++).

  1. Jakich zasad musi program się trzymać, aby nie były mu potrzebne uprawnienia administracyjne?
    Nie znalazłam nigdzie takiej listy czynności, która by powodowała, że Windows dostaje kociokwiku z tymi okienkami UAC.
    Z moich obserwacji wynika, że nie wolno nawet myśleć o dotykaniu rejestru.

  2. Czy każdy program, który chce zajrzeć do rejestru, musi być uruchamiany z uprawnieniami administratora?
    Czy też może można coś zrobić, aby program miał dostęp do rejestru mimo bycia odpalanym przez zwykłego użytkownika (nawet nie z grupy administratorów)? Coś, to np. nie wiem, podpisać cyfrowo...? Zmienić ustawienia bezpieczeństwa...?

  3. Instalator pewnego programu wykorzystuje program subst do zmapowania dysku na pewien folder. Wykorzystuje go w taki sposób, że tworzy Process z odpowiednimi argumentami i odpala przez Start().
    Instalator ten w innych miejscach potrzebuje skorzystać z rejestru, stąd musi być odpalany z uprawnieniami administratora. Jednakże, jeżeli tak zrobimy, to napotkamy nowy problem - użytkownik nie będzie miał dostępu do dysku, który został zmapowany.... Tzn. może go odczytać, ale nie może modyfikować plików (a musi móc). Jeżeli uruchomię explorer.exe z uprawnieniami administratora, to mogę modyfikować pliki...
    Jak to obejść? Mam zero pomysłów, po prostu kompletnie już nie wiem.

3

Po HKCU w rejestrze i katalogu użytkownika C:\DOCUME~1\User\ można bodaj grzebać bez ograniczeń. Programy zainstalowane dla wszystkich użytkownków powinny siedzieć w C:\Program Files, ale już dynamiczne dane i ustawienia z nimi związane w indywidualnym katalogu użytkownika (konkretniej %APPDATA%). Zdarza się też praktyka instalowania programu wyłącznie dla danego użytkownika, wtedy często wszystkie pliki lądują do %APPDATA% konkretnego usera. Krótko mówiąc: jako szary user nie możesz zmieniać niczego, co nie jest wprost oznaczone jako Twoje i tylko Twoje (bo będzie to miało wpływ na innych użytkowników).

Większość tych ograniczeń jest w Windowsie od dawna, tylko od Visty cywile nie siedzą wreszcie przez 100% czasu na adminie (narzekając jakie to te łindołsy zawirusowane), bo wymusza to UAC.

2

Czy każdy program, który chce zajrzeć do rejestru, musi być uruchamiany z uprawnieniami administratora?

Ależ skąd. Wszystkie programy których używasz zaglądają do rejestru - od notatnika, Worda po Visual Studio. Czy są uruchomione z podwyższonymi uprawnieniami? Nie. Kwestia taka do których kluczy rejestru można pisać, z których czytać i w jaki sposób. Wszystko jest na msdn. Przykładowo, wiele programów zapisuje listę ostatnio używanych/otwieranych plików w rejestrze, a nie działają z uprawnieniami administratora.

Jakich zasad musi program się trzymać, aby nie były mu potrzebne uprawnienia administracyjne?

Tak mniej więcej:

  • Pisać/czytać tylko w tych katalogach, do których użytkownik ma uprawnienia
  • Nie wykonywać czynności, które wymagają uprawnień administratora (np. instalacja usługi itd).
  • Pisanie/czytanie z rejestru: analogicznie jak pisanie w katalogach

Możesz jeszcze zajrzeć tu: http://msdn.microsoft.com/en-us/library/windows/desktop/bb756973.aspx - o ile dobrze kojarzę, to Windows Server 2008 domyślnie ma taki sam poziom upierdliwości (czy bezpieczeństwa raczej) jak Vista.

0

Wielkie dzięki, daje to szansę na to, że większość rzeczy będzie działać... jak poprzenoszę wszystkie ustawienia do HKCU ;/ (pliki już są w %APPDATA%).
Czy wiecie może jeszcze, czy można odczytać dane z rejestru z pozostałych gałęzi...?

1

Na identycznych zasadach jak w XP może użytkownik. W większości przypadków odczyt powinien się udać, poza kluczami dotyczącymi delikatnych ustawień samego systemu.

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