Как-то давным давно потребовалось решить проблему с сокрытием параметров запуска программы, ибо их можно было выпалить тем же ProcessExplorer'ом.
Решение:
Код:
// ф-я вычищает параметры запуска, оставляя только значение равное ParamStr(0)
procedure ClearCommandLine;
var
p: PChar;
i, Len: Integer;
begin
p := GetCommandLineW;
while True do
begin
while (P[0] <> #0) and (P[0] <= ' ') do
Inc(P);
if (P[0] = '"') and (P[1] = '"') then
Inc(P, 2) // 2 - ибо в юникоде, по хорошему надо SizeOf(Char)
else
Break;
end;
while P[0] > ' ' do
begin
if P[0] = '"' then
begin
Inc(P);
while (P[0] <> #0) and (P[0] <> '"') do
Inc(P);
if P[0] <> #0 then
Inc(P);
end
else
Inc(P);
end;
Len := lstrlenW(p);
for i := 0 to Pred(Len) do
begin
P^ := #0;
Inc(P);
end;
end;