Własny program, a uprawnienia administratora

0

Witam,

właściwie to nie wiem czy dobrze nazwałem temat - ale tutaj wytłumaczę o co mi chodzi.
Otóż mam aplikację. Aplikacja jest generatorem ofert. Zapisuje, odczutuje, kopiuje pliki - czyli przeprowadza podstawowe operacje. Napisana jest w środowisku qt c++. Działa wszystko. Program posiada instalator który instaluje pliki w ProgramFiles na dysku systemowym. I teraz pojawia się mały problem: Otóż po instalacji na komputerach innych niż mój - jeśli nie uruchomię programu z prawami administratora - to aplikacja, podczas działania nie uzyskuje dostępu do plików które są w folderze instalacji aplikacji. Rozumiem, że to przez to, że folder jest na dysku systemowym i UAC pilnuje wszystkiego. Oczywiście jeśli aplikację uruchomię z prawami administratora - wszystko działa. Aby nie wybierać za każdym uruchomieniem "Uruchom jako administrator" - tak samo na komputerach klienckich nie mogę tej opcji zaznaczyć - to dodałem do programu plik manifest który robi to domyślnie. I teraz moje pytania:

Powiedzmy, że komputery klienckie są zwykłymi użytkownikami - czy jeśli program sam zapyta o uprawnienia administratora - to czy użytkownik zawsze będzie mógł wyrazić zgodę?
Czy jednak przez ten plik manifest - który wymaga aby program był z uprawnieniami administratora - nie uda nam się uruchmić programu?
Może zmiana miejsca instalcji - czyli np. na pulpicie albo w innym miejscu - pozbędzie się kłopotu z wymogiem praw admina?
Chyba, że taki plik manifest, domyślne wymagane uprawnienia administratora - to normalna praktyka?

Niestety nie mam dostępu do danego komputera klienta. Nie mogę tego sprawdzić. Może pytania są naiwne, może początkujące - ale chciałbym się zorientować prawidłowo w temacie.
Proszę o wyrozumiałość - jestem, że tak powiem troszkę ograniczony tym, że nie mogę wszystkiego wszędzie sprawdzić (chodzi o komputery klientów) oraz jestem pod presją.
Temat jest bardziej do przegadania. Jakoś sobie z tym będę musiał poradzić, ale muszę się upewnić, że idę dobrą drogą.

Pozdrawiam

1

a nie prosciej Ci sprawdzic? Postaw Virtualna maszyne z setupem jaki masz u klienta i probuj. Mozesz wlaczyc sobie Remote Debugging i bedziesz widzial jak sie Twoja aplikacja zachowa

0

Dziękuję za odpowiedź! :)

Właściwie to też racja. Nie wiem czemu nie pomyślałem o tym! Ahh mój błąd. Chyba przez to, że i czas i presja mnie przycisnęła, ale nie ma co szukać usprawiedliwień. Do testów - to jak najbardziej dobry pomysł. Oczywiście chwila na przygotowania - ale zrobię.

Zrobiłem testy na szybko na innym komputerze (nie wirtualnym) - który sobie zorganizowałem, z plikiem manifest - i oczywiście z prawami admina działało. Znajdę odpowiedni moment i zrobię testy bez pliku manifest z instalacją na pulpicie, albo hmmm w appdata albo jakimś "domowym" katalogu użytkownika. Mam nadzieję, że pozbędzie mnie wymogu uruchamiania programu z prawami admina. Jeśli faktycznie plan wyjdzie - to będzie problem dla tych klientów złatwiony bo dla nich to obojętne gdzie instaluje się program. Oczywiście wolałbym "na profesjonalnie" czy może "zgodnie z sztuką" - ale to wymaga jeszcze tego abym się douczył oraz prób.

1

Przy instalacji są dwa główne powody, dla których wymaga są uprawnienia admina:

  1. lokalizacja w Program Files - przenieś gdzieś do folderów użytkownika, a będzie OK
  2. instalacja "perMachine" - użytkownicy bez praw admina mogą instalować tylko "perUser".

Oczywiście mogą być też inne powody (np. użycie polecenia regasm), ale ta dwa powyższe są najczęstsze.

1
TerminusUnknow napisał(a):

Powiedzmy, że komputery klienckie są zwykłymi użytkownikami - czy jeśli program sam zapyta o uprawnienia administratora - to czy użytkownik zawsze będzie mógł wyrazić zgodę?

Zgodę wyrazić może ale jeśli jest hasło na koncie admina a user go nie zna to "wyrażenie zgody" nic nie da bo się na admina nie przeloguje

Może zmiana miejsca instalcji - czyli np. na pulpicie albo w innym miejscu - pozbędzie się kłopotu z wymogiem praw admina?

to nie miejsce instalacji jest problemem tylko miejsce składowania plików (np. z danymi) wymagających uprawnień do zmiany jest problemem. Powinny one być w https://blogs.msdn.microsoft.com/patricka/2010/03/18/where-should-i-store-my-data-and-configuration-files-if-i-target-multiple-os-versions/

0

@aurel @abrakadaber Dziękuję bardzo ludzie! :)

To wyjaśnia mi wiele. Najważniejsze, że instalacje czyli: plików programu oraz jak w moim przypadku plików z danymi mogę przenieść choćby do (zgodnie z linkiem zapodanym przez @abrakadaber ) :
%USERPROFILE%\AppData\Local\<MyCompany>\<MyApp>
czy
%USERPROFILE%\AppData\Roaming\<MyCompany>\<MyApp>

To na pewno załatwi sprawę. Oczywiście spróbuję. Jejku jak mi ulżyło - serio. Znaczy oczywiście nie przetestowałem tego jeszcze ale to na pewno rozwiązanie problemu. Żaden Admin u klientów się mnie czepiać nie będzie. Użytkownik zainstaluje i od razu bez problemów będzie działać.

2

plików programu (exe, dll, ikony, obrazki itp), które TYLKO ODCZYTUJESZ nie musisz przenosić. Przenieść wypadało by pliki z ustawieniami, danymi i inne, które zmieniasz

0

Panie i Panowie - działa!

Zrobiłem to według rady @abrakadaber - czyli wszystkie dane, ustawienia czyli to co zmieniam - wyrzuciłem do folderu %USERPROFILE%\AppData\Local\<MyCompany>\<MyApp> - a resztę zostawiłem tam gdzie było. Wyrzuciłem oczywiście plik manifest z głównego folderu aplikacji. Takie połączenie albo lepiej "balansowanie" na tych folderach działa prawidłowo oraz jest "zgodnie z sztuką".

Raz jeszcze chciałbym podziękować za wsparcie i ukierunkowanie na dobre tory myślowe. Temat na pewno sobie rozszerze jeszcze bardziej. Nauczyłem się wielu ciekawych rzeczy i na pewno wszystko wykorzystam w przyszłości. Ostatni raz - dziękuję :)

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