CreateProcess bez cmd

0

Haj. Jest świetnie znany kawałek kodu z wywołaniem jakiegoś programu w kontekście cmd.exe:

CreateProcess(PChar(GetEnvVarValue('systemroot') + '\system32\cmd.exe'), PChar('/C "net view"'), nil, nil, TRUE, 0, nil, 'c:\', info, process) then ...

Zastanawiam się, dlaczego nie chce on działać, gdy zastosuje się następujące rozwiązanie:

CreateProcess(PChar(GetEnvVarValue('systemroot') + '\system32\net.exe'), 'view', nil, nil, TRUE, 0, nil, 'c:\', info, process) then ...

i zamiast wyświetlenia listy hostów w grupie roboczej, pipe zwraca litanię o tym, z jakimi parametrami mam wywoływać net.exe. Ominięcie cmd wydaje się bardziej eleganckie i szybkie, ale dlaczego bez niego net.exe nie dostaje (nie widzi?) parametru, np. view, choć próbowałem go wpisać na różne sposoby, w cudzysłowie, itp.

0

Proponuję użyć wywołania wg wzorca:

CreateProcess(nil, PChar('"Ścieżka do programu\Nazwa programu.exe" parametr_1_bez_spacji "parametr 2 ze spacjami" parametr3'), nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, PChar('Folder_roboczy_bez_cudzysłowi'), info, process) then ...

np.:

CreateProcess(nil, PChar('"'+GetEnvVarValue('systemroot')+'\system32\net.exe" view'), nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, PChar('c:\'), info, process) then ...

Pzdr.
Marogo

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