Praca programu w sieci, a prawa do zapisu

0

Witam

Nie za bardzo wiem czy to tu pasuje, najwyżej proszę o przeniesienie do bardziej odpowiedniego działu.
Napisałem program we FreePascalu, który współpracuje z bazą danych SQlite. Program działa w sieci, baza znajduje się na dysku sieciowym (jakiś prosty, kilkuletni model Synology). Wszystkie komputery mają pełny dostęp do zasobów tego dysku bez ograniczeń. Komputery w sieci pracują pod kontrolą Win 7. Problem polega na tym, że na części komputerów program działa prawidłowo, a na części występuje moim zdaniem ewidentny problem z prawami do zapisu, zarówno w przypadku zapisu zmian w bazie danych, jak i zapisie generowanych w programie pdfów (także katalog na tym dysku). Tak jak by dla programu lokalizacja bazy danych oraz katalogu w którym są automatycznie zapisywane pdfy była tylko do odczytu. Tak oczywiście nie jest gdyż sprawdziłem uprawnienia i są ok, a ponadto w te lokalizacje bez problemu można zapisywać pliki z poziomu eksploratora. Problem jest o tyle dziwny, że występuje tylko na części komputerów (taki sam OS na wszystkich). Problem nie występuje gdy np. testowo przekopiuję cały katalog programu z dysku sieciowego na dysk lokalny. Tutaj program działa prawidłowo na wszystkich komputerach, także i na tych na których problem występuje po sieci.
Nie wiem czy problemu szukać po stronie programu czy bardziej jednak po stronie dysku sieciowego... :(

1

Tzn. prawa do zapisu możesz nie odebrać, ale zapisać i tak nie będziesz mógł, jeśli aplikacja nie posiada do tego uprawnień; Znajdź program, który nie zapisuje danych prawidłowo i spróbuj uruchomić go na prawach admina (requireAdministrator) i wtedy zobacz co się stanie;

Spróbuj, w razie czego pomyśli się dalej.

0

Witam

Skompilowałem w Lazarusie program z poziomem wykonania jako requireAdministrator i drugą wersję jako highestAvailable. Jutro sprawdzę obydwie i dam znać.
Na razie dzięki za wskazówkę...

1

Jeżeli dobrze rozumiem to masz kilka komputerów w sieci, które łączą się do jednego i tego samego pliku na serwerze (plik bazy SQLite)? Jeżeli tak to działa to nie wykluczone, że problem pojawia się przy wielodostępie (którego tak wprost nie ma w SQLite - trzeba pokombinować). Jeżeli faktycznie tak to działa jak opisałem wyżej to na Twoim miejscu zastanowiłbym się czy nie przejść np na FireBirda. Też jest to jeden plik ale mimo wszystko normalna baza z multidostępem.

0
furious programming napisał(a):

[...] spróbuj uruchomić go na prawach admina (requireAdministrator) i wtedy zobacz co się stanie

O to chodziło :).
Czemu problem występował/nie występował na wszystkich końcówkach tylko na części?

0

Bo w niektórych systemach może być wyłączone UAC, ale sprawdź sam :]

0

Moim zdaniem średnie rozwiązanie z tym podnoszeniem uprawnień. Spotykałem się z takimi ustawieniami, że nie dało rady. Bo user miał odebrane takie możliwości.

A winą najpewniej należy obarczyć UAC.

0

Moim zdaniem średnie rozwiązanie z tym podnoszeniem uprawnień. Spotykałem się z takimi ustawieniami, że nie dało rady.

Podnieść uprawnienia można tylko gdy użytkownik ma do tego uprawnienia, czyli jest administratorem.

Wszystkie komputery mają pełny dostęp do zasobów tego dysku bez ograniczeń.

Najwyraźniej nie, tylko sami administratorzy.

0
Azarien napisał(a):

Podnieść uprawnienia można tylko gdy użytkownik ma do tego uprawnienia, czyli jest administratorem.
I właśnie dlatego ja piszę swoje programy tak aby nie trzeba było podnosić nigdy uprawnień. Chyba, że do instalacji.

0

Pomysł ze sprawdzeniem działania programu na najwyższych możliwych uprawnieniach miał dowieść tego, że niektóre jednostki nie mają wystarczających uprawnień i to się faktycznie okazało; Teraz można albo pozostawić aplikacje z takimi uprawnieniami (to nie jest zalecane), albo jeszcze raz posprawdzać ustawienia na tych komputerach, które nie mogą zapisywać zmian;

Sam preferuję tworzenie aplikacji wymagających najniższych uprawnień, więc nic nie sugeruję; Wszelkie instalatory czy ogólnie programy, które potrzebują wprowadzać zmiany w zabezpieczonych przez UAC miejscach, siłą rzeczy muszą mieć wyższe uprawnienia i do tego właśnie służą ich ustawienia w opcjach projektów; Jeśli natomiast da się skonfigurować system, tak aby mieć dostęp do danych zasobów, to lepiej jest to wykonać i pozostawić podstawowe uprawnienia.

0

Tylko teraz tak myślę, że zapis na dysku sieciowym nie powinien być jakoś specjalnie zabroniony. Moim zdaniem jest jakiś problem w konfiguracji. Bo przecież dysk sieciowy to nie jest katalog Program Files, czy klucz HKLM w rejestrze. Tu prawa powinien mieć zapisywać każdy.

0

Coś i tak jest nie tak z ustawieniami systemowymi, skoro program z podstawowymi uprawnieniami nie ma dostępu do dysku, a z requireAdministrator dostęp jest możliwy; Trzeba by to sprawdzić, ewentualnie zresetować ustawienia uprawnień w systemie.

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