Skocz do zawartości

przejmowanie urchamiania plików/programów


Curse

Recommended Posts

1/ jakiś program chce otworzyć jakiś plik (np Word otwiera costam.doc) i jak zrobić aby to otwieranie zostało wstrzymane - program sprawdza czy np plik jest na dysku C i jeżeli tak to pozwala otworzyć plik, a jeśli np na dysku D to nie?
2/ jak zrobić to co wyżej tylko, że dla programów - czyli jak user bądź inny program chce np uruchomić costam.exe, to też jest sprawdzane na jakim dysku się znajduje i program pozwala bądź zabrania uruchomić daną aplikację?

Link do komentarza
Udostępnij na innych stronach

Witam!
Niestety nie znam odpowiedzi na to pytanie. Chciałem tylko napisać że swego czasu pisałem podobny program w MASM ale opierał sie on na sterowniku VXD w którym przejmowałem obsługę CREATE_PROCESS.
Niestety miałem problem z komunikacją się z programem w który mógłby pytać o hasło, choć napewno jest na to sposób ale ja dałem sobie spokój zwłaszcza że Windows XP stał się bardzo popularny a w nim jak wiadomu VXD-ki nie mają racji bytu wiec pozostawał by jedynie SYS. Ale o pisaniu SYS-ów mam jeszcze mniejsze pojęcie niż o VXD.
Gdyby ktoś znał inny dobry sposób (nie dający się obejść w taki banalny sposób jak uruchomienie programu poprzez jakiegoś menadżera plików)też dołanczam sie do prośby o odpowiedź.
Powodzenia!

Link do komentarza
Udostępnij na innych stronach

Witam panie banasiak,

sposób, który podam może nie jest jakiś tam efektywny, ale łatwy do zrealizowania. Całość polega na tym, że ustawisz sobie otwierania plików(np. doc, czy exe) za pomocą twojego programu. Kiedy user kliknie na plik, uruchomi się twój program, a jako parametr będzie podany właśnie ten plik (w lpCmdLine jest jego ścieżka). Potem sprawdzasz sobie scieżkę pliku (CmdLine, czy argv) i jeśli ścieżka spełni warunki to uruchamiasz plik...jak?? Oto kod funkcji ShellExecute:

ShellExecute(hwnd, "open", "plik", NULL, NULL, SW_SHOWNORMAL) ;

Taki sposób nie jest najlepszym rozwiązaniem, myślę, że zastosowanie ShellExtensions powinno dać wymarzony efekt...

Pozdr

Link do komentarza
Udostępnij na innych stronach

Gdyby Pan czytał forum to zobaczył by temat obok w którym inny Pan miał podobny problem i dałem link do stronki gdzie jest gotowy tutorial ale zdaję sobie sprawę że również pan może mieć zbyt mało czasu by szukać więc podaję link: https://www.codeproject.com/shell/shellextguide1.asp

Instrukcja obsługi:
1. Przeczytać dokładnie artykuł.
2. Zobaczyć przykład dołączony do lekcji.
3. Jeśli wszystko dokładnie się zrozumiało to proszę zmienić numerek na końcu adresu na większy i powtórzyć wszystkie punkty.

Link do komentarza
Udostępnij na innych stronach

Hej,

no to napisz worda od nowa...hehe nie no co ty żartuje (chociaż czemu nie ;)

Możesz to zrobić tak (choć zapewne jest lepsze rozwiązanie ;)
Napisz program, który co jakiś czas (zrób se timera) będzie pobierał uchwyt aktywnego okna (GetForegroundWindow) i będzie sprawdzał czy w tytule tego okna jest ciąg znaków ".doc", jeśli tak to wtedy robisz z tym oknem co chcesz, chowasz niszczysz...zależy od ciebie...jak masz uchwyt okna możesz zrobić sysko...

btw: a jeśli zmienię rozszerzenie pliku na ".nic" i otworze? hę jak to sobie wyobrażałeś? hę?

pozdrawiam

Link do komentarza
Udostępnij na innych stronach

sprawdzanie co jakiś czas nic nie da, bo jak ktoś mi wrzuci jakiegoś niemiłego exeka to zanim go zamknie to już będzie za późno

w tym co chcę osiągnąć (sprawdzanie każdego pliku do jakiego ktoś/coś chce uzyskać dostęp) rozszerzenie nie ma znaczenia bo będzie analizowane po dyskach/folderach a w danym folderze to niech już sobie ma pliki worda z rozszerzeniem .nic

Link do komentarza
Udostępnij na innych stronach

No to będziesz musiał zaimplementować mechanizm podobny to antyvirow ktore sobie patrzą kiedy co jest używane/otwierane i to monitoruja (ale skąd to wiedzą?), jest funkcja FindFirstChangeNotification która nie rozwiązuje problemu bo zgłasza się tylko plik jest zapisywany na dysk (ewentualnie inne nie interesujące Cię przypadki). No to cóż ja raczej więcej nic nie pomogę. Ewentualnie możesz użyć hooków, hook WH_CBT daje tyle co i nic bo zgłasza się tylko wtedy kiedy tworzone jest okno. Nie wiem może napisz do ludzi z Symanteca? ;) albo poszukaj po grupach dyskusyjnych.

Link do komentarza
Udostępnij na innych stronach

Witam ponownie...

Tutaj masz takiego linka:
https://pancake.sggw.waw.pl/~hador/Masm32/Pl/pages/28.htm

Znajdziesz tam opis funkcji uruchomieniowych, czyli operacje na procesach, nie wiem czy to pomoże bo sam zabieram się za czytanie tych artów, ale polecam wszystkim, bo to jest wg mnie ciekawe, czy rozwiąże twój problem? Chiba warto spróbować...pamiętaj...impassible is nothing, trzeba mieć tylko mocne nerwy..hehe

który raz to ja pozdrawiam...niech wam będzie

pozdro

;)

Link do komentarza
Udostępnij na innych stronach

nie musisz wcale znać asemblera , żeby wyciągnąć coś z tych artów. autor korzysta z tego języka, ale ty po przeczytaniu powinieneś mniej więcej wiedzieć o co chodzi. funkcje, które są używane możesz znaleźć w helpie, a tam znajdziesz już ich opis, typy parametierów i inne rzeczy (help na ftp tej strony).

pozdrawiam ;)

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...