CreateProcess и UAC
От: DDS  
Дата: 05.09.11 05:06
Оценка:
Вообщем ситуация такая. Из своей программы запускаю другую свою прогу 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;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.