|
Tomasz Kaczanowski - 10 Gru 2007, 08:17 Mam taki problem sie czasami bezpośrednio do napędu. Jest jednak mały problem, a nazwya się UAC pod vistą. O ile w programie - nie ma problemu, to co zrobić z poziomu biblioteki? Problem jest taki, że biblioteki uzywać będą nie alter - 10 Gru 2007, 11:48 Mam taki problem sie czasami bezpośrednio do napędu. Jest jednak mały problem, a nazwya się UAC pod vistą. O ile w programie - nie ma problemu, to co zrobić z poziomu biblioteki? Problem jest taki, że biblioteki uzywać będą nie UAC jest na tyle pokręcone, że lepiej byłoby gdybyś podał ten niedziałający kod. Inaczej problemem może być prawie wszystko Pozdrawiam Tomasz Kaczanowski - 11 Gru 2007, 02:17 | Mam taki problem | sie czasami bezpośrednio do napędu. Jest jednak mały problem, a nazwya | się UAC pod vistą. O ile w programie - nie ma problemu, to co zrobić z | poziomu biblioteki? Problem jest taki, że biblioteki uzywać będą nie UAC jest na tyle pokręcone, że lepiej byłoby gdybyś podał ten np ten kod: hDevice:=CreateFile(pchar('\\.\PhysicalDrive'+inttostr(drv)), if not res then Jest blad przy odczycie - blad nr 5. alter - 11 Gru 2007, 10:40 Poczytaj trochę na temat CreateFile. W opisanej sytuacji ze względów bezpieczeństwa wywołanie CreateFile wymaga pełnych praw administratora (jak wiadomo UAC je zabiera). Jeżeli jesteś pewien, że każda aplikacja, jaka korzysta z tego dll'a będzie zawsze uruchamiana przez użytkownika, który ma dostęp do konta administratora to najprościej spreparować odpowiedni manifest i wstawić go do zasobów danej aplikacji. Istnieje również inne rozwiązanie, ale jest ono bardziej skomplikowane Pozdrawiam Tomasz Kaczanowski - 12 Gru 2007, 01:54 Poczytaj trochę na temat CreateFile. W opisanej sytuacji ze względów bezpieczeństwa wywołanie CreateFile wymaga pełnych praw administratora (jak wiadomo UAC je zabiera). Jeżeli jesteś pewien, że każda aplikacja, jaka korzysta z tego dll'a będzie zawsze uruchamiana przez użytkownika, który ma dostęp do konta administratora to najprościej spreparować odpowiedni manifest i wstawić go do zasobów danej aplikacji. Istnieje również inne rozwiązanie, ale jest ono bardziej skomplikowane nie ja ją pisałem, ja pisałem tylko bibliotekę, zresztą to wszystko jest opisane wczesniej. I to, że mogę wstawić manifest i jak to zrobic, wiem, interesuje mnie co zrobić, by biblioteka miała dostęp do urządzenia. alter - 12 Gru 2007, 07:25 | Poczytaj trochę na temat CreateFile. W opisanej sytuacji ze względów | bezpieczeństwa wywołanie CreateFile wymaga pełnych praw administratora | (jak wiadomo UAC je zabiera). Jeżeli jesteś pewien, że każda | aplikacja, jaka korzysta z tego dll'a będzie zawsze uruchamiana przez | użytkownika, który ma dostęp do konta administratora to najprościej | spreparować odpowiedni manifest i wstawić go do zasobów danej aplikacji. | Istnieje również inne rozwiązanie, ale jest ono bardziej skomplikowane Ale możesz w takim układzie pokombinować z jakimiś aplikacjami do edycji zasobów. Albo biblioteka niech będzie jedynie interfejsem udostępniającym jakieś funkcje, które tak naprawdę będą wykonywane przez jakąś usługę, z którą komunikuje się biblioteka. Albo możesz zalecić użytkownikowi aby wyłączył UAC... pozdrawiam Norbert - 13 Gru 2007, 10:25 Istnieje również inne rozwiązanie, ale jest ono bardziej skomplikowane ale za to nie wymaga tworzenia manifestu. Moze napisz kilka slow na ten temat, to mnie bedzie za chwile dotyczyc. Dzieki z gory. pozdrawiam alter - 13 Gru 2007, 11:04 | Istnieje również inne rozwiązanie, ale jest ono bardziej skomplikowane Moze napisz kilka slow na ten temat, to mnie bedzie za chwile dotyczyc. pozdrawiam Problem polega na tym, że najsensowniejszy fizyczny dostęp do dysku jest poprzez CreateFile. Niestety CreateFile aby tego dokonać musi być wywołana z pełnymi prawami administratora. UAC powoduje, że nawet admin domyślnie ich nie posiada. Ale już usługi Windows tak. Wybór więc jest prosty. Zresztą takie rozwiązanie jest stosowane przez niektóre aplikacje np. do defragmentacji dysku. Rozwiązanie jest banalnie proste ale posiada również swoje ograniczenia (np. w możliwości obsługi obiektów). 1. Użytkownik uruchamia aplikację i aplikacja działa wg zadanego schematu bezpieczeństwa (zapewnienie, że użytkownik nie będzie miał dostępu do funkcji, do których nie powinien mieć - bardzo ważne) 2. Aplikacja korzysta z funkcjonalności opartej o CreateFile. Założenie jest takie, że funkcja realizująca ma się znajdować w bibliotece. 2.1. aplikacja wywołuje z biblioteki odpowiednią funkcję 2.2. w kodzie funkcji komunikujemy się z zaprojektowaną przez nas i działającą na danym komputerze usługą 2.3. usługa sprawdza, czy zapytanie, które właśnie otrzymała pochodzi od autoryzowanego klienta. Jeżeli nie to zwraca błąd, jeżeli tak wykonuje lub zaczyna wykonywać (to zależy np. od wymagań stawianych aplikacji) odpowiednią funkcjonalność i zwraca jej status. CreateFile jest oczywiście wywoływane przez usługę 2.4. funkcja w dll przekazuje status operacji do aplikacji Wadą tego rozwiązania jest niestety niewątpliwie fakt iż to programista Istnieje również rozwiązanie przez COM ale tego jeszcze nie próbowałem Pozdrawiam Problem z utworzeniem DLL'a (troszke dlugie) Przekazanie bitmapy do dll, tam jej obrobka i zwrot obrobionej Pomocy - Access Violation - Klasa - DLL Przekazywanie klasy przez DLL'a dll + rundll32.exe = kiszka... DLL'ka - prototyp ? Zone Alarm i VSUTIL.DLL |