Вообщем ситуация такая. Из своей программы запускаю другую свою прогу CreateProcessОМ.
Программа запускается, но:
1) не хочет открываться ни один диалог (открытия, сохранения файлов), ошибок не вызывает, просто .Execute() проглатывает и ничего не происходит.
2) не хочет работать с COM/OLE
Предполагаю, что у программы нет прав. Ситуация осложняется тем, что запуск идет след. образом:
1) Запусается 1С с правами администратора
2) 1С вызывает dll-ку (внешняя компонента)
3) dll-ка запусает приложение CreateProcessОМ
Всегда все работало, а вот на конкретном компьютере с вин7 не хочет.
Предполагаю что виноват UAC, хотя он был мною отключен. Полностью.
Кусок кода:
procedure StartExeProccess;
var
si: TSTARTUPINFO;
pi: TPROCESSINFORMATION;
env: array[0..100] of Char;
begin
ZeroMemory(@env, SizeOf(env));
ZeroMemory(@si, SizeOf(si));
ZeroMemory(@pi, SizeOf(pi));
R:=CreateProcess(nil, Pchar('"'+DirPath+ExeName+'" "'+datafile_name+'"'), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, PChar(DirPath), si, pi);
if R then piddd:=pi.dwProcessId;
wait:=false;
if R then
begin
WaitForSingleObject(pi.hProcess, INFINITE);
MyAddIn.EventStart('СохранениеДанных', 'proc_id='+inttostr(pi.dwProcessId)+'|datafile='+datafile_name);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
killed:=true;
end;
end;