Czy da się uruchomić program w taki sposób

0

Witam

Powiedzmy że napisałem program , ten program korzysta z kilku bibliotek , ale on sam jest zapisany na płycie. Problem w tym że :

  • biblioteki są na dysku twardym
  • program jest na płycie i nie można go przenieść ani nic dograć

czy da się tak uruchomić ten program aby korzystał z bibliotek w innym miejscu , mimo że on sam jest tak napisany by korzystał z bibliotek w tym samym folderze ?

0

Jakby logicznie spojrzeć to program który korzysta z bibliotek które są w tym samym folderze co on nie ruszy skoro ich tam nie będzie.

Ale systemy to skomplikowane rozumy może zaczną szukać bibliotek u siebie jak ich nie będzie na płycie ;p

Musisz spróbować lub poczekać na odp jakiegoś eksperta ;p

0

Zainwestuj lepiej w jakiś gotowy protector albo napisz część programu, której nie chcesz, by jej kod ktoś oglądał, w C++. Takie własne zabezpieczenia, na poziomie wiedzy jaki posiadasz, każdy złamie w 10 minut.

0

ale czy da się jakoś ten program uruchomić , nie wiem może przez jakąś magiczną instrukcję w konsoli typu , program.exe - start folder = c:\dll , g:\dll ?

0

Tak, jest kilka możliwości uruchomienia aplikacji z bibliotekami w danej lokalizacji. Ale i tak nic nie powstrzyma kogoś od skopiowania ich ;).

0

Jeśli z góry znasz położenie tych bibliotek, to można w konsoli. Ustawiamy zmienną środowiskową PATH, aby zawierała katalogi z twoimi bibliotekami i uruchamiasz swój program. Oczywiście mozna tak zrobic nie używającc konsoli - chodzi mi o ustawienie zmiennej PATH.

1

Jeśli z góry znasz położenie tych bibliotek, to można w konsoli. Ustawiamy zmienną środowiskową PATH, aby zawierała katalogi z twoimi bibliotekami i uruchamiasz swój program. Oczywiście mozna tak zrobic nie używającc konsoli - chodzi mi o ustawienie zmiennej PATH.

Fajnie, ale tu mamy .NET - zmienna PATH może sobie wynosić ile chce, nie ma to żadnego znaczenia.

Spróbuj zrobić coś w tym rodzaju, będziesz miał namiastkę packera: http://dranaxum.wordpress.com/2008/02/25/dynamic-load-net-dll-files-creating-a-plug-in-system-c/

0

to może jeszcze z innej strony, mam taki program dosowy do konwertowania plików , bierze on wszystkie zdjęcia z katalogu w którym się znajduje i konwertuje je do innej rozdzielczości , powiedzmy że on jest zapisany na płycie i nie chcę go przenosić , czy da się go tak uruchomić aby skorzystał ze zdjęć w folderze powiedzmy c:\zdjecia\ ?

0
autorx napisał(a)

to może jeszcze z innej strony, mam taki program dosowy do konwertowania plików , bierze on wszystkie zdjęcia z katalogu w którym się znajduje i konwertuje je do innej rozdzielczości , powiedzmy że on jest zapisany na płycie i nie chcę go przenosić , czy da się go tak uruchomić aby skorzystał ze zdjęć w folderze powiedzmy c:\zdjecia\ ?

jeśli autor programu nie przewidział takiej możliwości to na 99% nie. Możesz mu w skrócie ustawić katalog startowy ale jeśli ścieżkę do obrazków podaje bezwzględną to nic z tym nie zrobisz.

Może napisz dokładnie co chcesz zrobić bo wróżek tu nie ma. I nie martw się - nikt twojego genialnego pomysłu na zabezpieczenie programu nie ukradnie bo po poziomie pytania widać, że średnio dobry jest to pomysł

1

to może jeszcze z innej strony, mam taki program dosowy do konwertowania plików , bierze on wszystkie zdjęcia z katalogu w którym się znajduje i konwertuje je do innej rozdzielczości , powiedzmy że on jest zapisany na płycie i nie chcę go przenosić , czy da się go tak uruchomić aby skorzystał ze zdjęć w folderze powiedzmy c:\zdjecia\ ?

Jeśli korzysta ze ścieżek względnych i szuka w swoim katalogu to może się da poustawiać jakoś za pomocą WorkingDirectory/CurrentDirectory/Wtf (w sumie nigdy tego nie potrzebowałem i nie wiem co jest do czego ;) ).
Ew. zawsze można spatchować program...

0
MSM napisał(a)

WorkingDirectory/CurrentDirectory/Wtf (w sumie nigdy tego nie potrzebowałem i nie wiem co jest do czego ;) ).

każdy proces pod systemy MS ma zdefiniowany swój bieżący katalog. przy uruchamianiu możesz podać ścieżkę, która stanie się tym katalogiem. jeśli jej nie podasz, stanie się nią bieżąca ścieżka Twojego procesu.
jest on wykorzystywany jako odniesienie dla względnych ścieżek, dzięki temu program może banalnie łatwo załadować np. konfigurację zależną od katalogu, w którym został uruchomiony. może też wykonać operacje na plikach z bieżącego katalogu (patrz problem autora wątku) - wtedy wystarczy np. z konsoli wbić się do danego miejsca i uruchomić program podając pełną ścieżkę do jego pliku exe.

0

W app.config można zdefiniować katalogi gdzie mają być szukane dll jeśli nie znajdzie ich w miejscach domyślnych. Nie chce mi się szukać dokładnie jak, do tego masz msdn. Tylko jeśli exe masz na płycie to i app.config musi tam być i jeśli nie ma w nim poprawnych ścieżek to i tak o kant d...
Inna opcja to złapanie AssemblyResolve http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx i zwrócenie assembly z dysku, ale i tak musisz znać ich "tajną" lokalizację.
Jak już pewnie zauważyłeś po postach innych osób obrałeś błędną drogę, którą nawet Olek zasugerowałby abyś nie szedł :)

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