[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

CreateProcess a dluga nazwa

Jakub Debski

2/19/2007 7:30:00 PM

Witam,

Czy wiecie mo?e czy jest mo?liwo?a stworzya proces w systemie Windows z
pliku, którego ?cie?ka jest d3u?sza ni? MAX_PATH? Nie pomaga
przekazanie ?cie?ki ani jako parametr pierwszy, ani jako command-line,
które powinno przyjmowaa do 32K danych...

Mog? bya dowolne, te? nieudokumentowane metody, ale dzia3aj?ce w
user-mode :)

pozdrawiam
Jakub


17 Answers

Piotr Ziemian \(Automex\)

2/20/2007 1:08:00 AM

0


U?ytkownik "Jakub Debski" <debski.jakub@wp.pl> napisa3 w wiadomo?ci
news:mn.9ccd7d728f80e435.68462@helloworld...
> Czy wiecie mo?e czy jest mo?liwo?a stworzya proces w systemie Windows z
> pliku, którego ?cie?ka jest d3u?sza ni? MAX_PATH? Nie pomaga przekazanie
> ?cie?ki ani jako parametr pierwszy, ani jako command-line, które powinno
> przyjmowaa do 32K danych...
>
Witam,

tak tylko "strzelam pomys3ami" (bo nie by3o o tym wspomniane):
a)
podaa ?cie?ke w ciapkach (w command-line):
zamiast >>C:\\scie?ka\aplikacja.exe<<
zapodaa >>"C:\\scie?ka\aplikacja.exe"<<
b)
ustawia w programie bie??cy katalog przy pomocy stosownej funkcji (np.
SetCurrentDirectory) i wywo3aa CreateProcess podaj?c sam? nazwe aplikacji
bez ?cie?ki

Pozdrawiam,
Piotr

Jakub Debski

2/20/2007 8:10:00 AM

0

Marsjanin has brought this to us :
> podaa ?cie?ke w ciapkach (w command-line):

to nie dzia3a.

> ustawia w programie bie??cy katalog przy pomocy stosownej funkcji (np.
> SetCurrentDirectory) i wywo3aa CreateProcess podaj?c sam? nazwe aplikacji bez
> ?cie?ki

SetCurrentDirectory dzia3a na maksymalnie MAX_PATH.

pozdrawiam
Jakub


Lukasz

2/20/2007 8:14:00 AM

0

Spróbuj wywo³aæ przy pomocy DOS-owej nazwy.
U¿yj GetShortPathName(...)

--
Lukasz


Lukasz

2/20/2007 8:16:00 AM

0

> SetCurrentDirectory dzia³a na maksymalnie MAX_PATH.

Ale mo¿esz podzieliæ jego wywo³anie na kilka kroków:
najpierw X:\katalog1\katalog2
pó¼niej .\katalog3\katalog4

--
Lukasz


Marcin Gabryszewski

2/20/2007 8:33:00 AM

0

Jakub Debski napisa3(a):
> Witam,
>
> Czy wiecie mo?e czy jest mo?liwo?a stworzya proces w systemie Windows z
> pliku, którego ?cie?ka jest d3u?sza ni? MAX_PATH? Nie pomaga przekazanie
> ?cie?ki ani jako parametr pierwszy, ani jako command-line, które powinno
> przyjmowaa do 32K danych...
>
> Mog? bya dowolne, te? nieudokumentowane metody, ale dzia3aj?ce w
> user-mode :)
>
> pozdrawiam
> Jakub
>
>
"\\??\\c:\moja_d3uga_scie?ka\\prog.exe"
i oczywi?cie unicode CreateProcessW

--
Marcin Gabryszewski
G DATA Software Sp. z o.o.
www.gdata.pl

Jakub Debski

2/20/2007 8:47:00 AM

0

Lukasz explained :
> Spróbuj wywo3aa przy pomocy DOS-owej nazwy.
> U?yj GetShortPathName(...)

Ciekawy pomys3. Spróbowa3 i dzia3a, gdy krótsza nazwa jest mniejsza ni?
MAX_PATH. Przy d3u?szej API sie wywala, ale przed wywaleniem ustawiane
jest Last Error na:
0x8 Not enough storage is available to process this command

regards,
Jaukb


Jakub Debski

2/20/2007 8:49:00 AM

0

Lukasz used his keyboard to write :
>> SetCurrentDirectory dzia3a na maksymalnie MAX_PATH.
>
> Ale mo?esz podzielia jego wywo3anie na kilka kroków:
> najpierw X:\katalog1\katalog2
> póYniej .\katalog3\katalog4

Niestety nie, to nie dzia3a.
SetCurrentDirectory jest zasz3o?ci? z 9x i nie operuje wewnetrznie na
?cie?kach d3u?szych ni? MAX_PATH.

pozdrawiam
Jakub


Jakub Debski

2/20/2007 8:58:00 AM

0

Marcin Gabryszewski explained on 20. 2. 2007 :
> "\\??\\c:\moja_d3uga_scie?ka\\prog.exe"
> i oczywi?cie unicode CreateProcessW

Tak oczywi?cie próbowa3em robia od pocz?tku.
Nie dzia3a, st?d moje pytanie :)

pozdrawiam
Jakub


Marcin Gabryszewski

2/20/2007 9:28:00 AM

0

Jakub Debski napisa3(a):
> Marcin Gabryszewski explained on 20. 2. 2007 :
>> "\\??\\c:\moja_d3uga_scie?ka\\prog.exe"
>> i oczywi?cie unicode CreateProcessW
>
> Tak oczywi?cie próbowa3em robia od pocz?tku.
> Nie dzia3a, st?d moje pytanie :)
>
> pozdrawiam
> Jakub
>
>
No to ZwCreateProcess i pe3na scie?ka systemowa
\\device\\harddiskvolumeX\\moja_d3uga_scie?ka\\prog.exe

Musi przej?a.
to z "\\??\\" te? nie powinno robia problemów z ZwXXX

--
Marcin Gabryszewski
G DATA Software Sp. z o.o.
www.gdata.pl

Piotr Ziemian \(Automex\)

2/20/2007 10:57:00 AM

0


U?ytkownik "Jakub Debski" <debski.jakub@wp.pl> napisa3 w wiadomo?ci
news:mn.a2267d727f655e1e.68470@wp.pl...
> SetCurrentDirectory dzia3a na maksymalnie MAX_PATH.

to mo?e ustawia nowy bie??cy katalog przy pomocy CreatFileW, ta funkcja
powinna jako? obs3u?ya ?ciezki d3u?sze niz MAX_PATH:

HANDLE currentDir = CreateFileW(
bardzo_dluga_sciezka_bez_nazwy_pliku,
GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL
);
if (currentDir != INVALID_HANDLE_VALUE) // uda3o sie ustawia katalog...
{
CloseHandle(currentDir); // ewentualnie przenie?a za CreateProcessW
CreateProcessW(aplikacja_bez_sciezki,...);
}

Pozdrawiam,
Piotr