Jak sprawić by w mojej aplikacji znajdowały się pliki i jak można je potem otworzyć za pomocą innych programów ( najlepiej komendami z cmd ). Na przykład ktoś otwiera mój program a otwiera się notatnik lub przeglądarka fotografii z otwartym plikiem który jest w moim exe. Chciałbym też uwzględnić że ktoś może zmienić nazwę mojemu exe.
- Rejestracja:około 11 lat
- Ostatnio:4 miesiące
- Lokalizacja:Pomorskie (Stare Kabaty)
Może funkcja system()
?
http://www.cplusplus.com/reference/cstdlib/system/
- Rejestracja:około 11 lat
- Ostatnio:4 miesiące
- Lokalizacja:Pomorskie (Stare Kabaty)
Z tego co zrozumiałem chcesz z programu wywoływać jakieś polecenia cmd.
system("dir") // wywołuje dir w powłoce systemowej
Wpisujesz w parametrze po prostu to, co chcesz aby zostalo przekazane do konsoli poleceń.

- Rejestracja:prawie 11 lat
- Ostatnio:ponad 5 lat
Ty chyba nie rozumiesz jak działa plik exe. To nie jest kontener w którym są dane , które <ort>bez problemowo</ort> można wyciągać. Oczywiście istnieją programy do odzyskiwania zasobów aplikacji ale to się opiera o RE i trzeba na to więcej wiedzy niż same postawy.
Ale jeśli ma ktoś jakiś super pomysł to posłucham.
- Rejestracja:około 10 lat
- Ostatnio:około 9 lat
- Postów:231
Ale przecież są programy do wypakowywania plików exe i sam nawet takiego używałem ( 7-ZIP).
A <ort>załużmy</ort> że chcę zrobić coś takiego jak launch4j. Zaraz wam podał link do <ort>wontku</ort> w którym ktoś powiedział że pliki jar można zapakować w exe.
Oto on:
http://4programmers.net/Forum/Java/246532-domyslne_ustawienie_jara_dla_*txt?p=1109011#id1109011
no tak - plik .jar jest pakowany tam właśnie jako zasób, potem przy uruchomieniu aplikacja sama z siebie go rozpakowuje i uruchamia wirtualną maszynę javy podając ten plik jako parametr
nie sprawdzałem, ale możliwe że poszli po linii najmniejszego oporu czyli plik jest po prostu wypakowywany do tempa, chociaż możliwe że dzieje się to w pamięci (wyższa szkoła). Tak działają pakery takie jak na przykład upx
- binarka jest pakowana jako zasób, a potem wypakowywana bezpośrednio do pamięci po czym tylko leci do niej skok
jako ciekawostkę powiem że w pliku .exe jak i każdym innym faktycznie można ukryć inne pliki jako alternatywne źródła (dotyczy tylko systemu plików NTFS)
załóżmy że masz plik tekstowy a.txt
(równie dobrze to może być plik a.exe) oraz zdjęcie a.jpg
które chcesz ukryć
w konsoli piszesz:
type a.jpg >a.txt:ukryty.jpg
i oto plik a.jpg
zostaje zapisany jako alternatywny strumień w pliku a.txt
można go otworzyć na przykład w paincie poleceniem:
mspaint a.txt:ukryty.jpg
jeżeli ukryłeś plik .exe to możesz go uruchomić poleceniem:
start .\a.txt:ukryty.exe
strumienie będą się kopiować i przenosić razem z plikiem dopóki robisz to między partycjami w systemie plików NTFS
jeżeli spakujesz plik to strumienie nie zostaną zachowane, chyba że w kompresorze zaznaczysz odpowiednią opcję - w WinRarze jest to opcja Save file streams
na zakładce Advanced
niestety nie każdy program obsługuje alternatywne strumienie i nie każdy ma partycję w systemie plików NTFS więc rozwiązanie jest mało powszechne
tak naprawdę jedyne realne zastosowanie alternatywnych strumieni to zapisanie w nich informacji przez przeglądarkę że plik został pobrany z Internetu - właśnie dzięki temu system przy próbie otworzenia .exe pobranego z sieci pyta się czy na pewno chcemy to zrobić


- Rejestracja:prawie 11 lat
- Ostatnio:ponad 5 lat
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
Westen