Re[5]: Проблемы с CreateProcessWithLogonW
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 19.06.03 08:05
Оценка: :)
Здравствуйте, ДмитрийК, Вы писали:

[]

si.wShowWindow := SW_HIDE; — так задумано или чего?
Проблемы с CreateProcessWithLogonW
От: ДмитрийК  
Дата: 18.06.03 11:13
Оценка:
Добрый день!
Как надо запускать CreateProcessWithLogonW, чтобы он отрабатывал аналогично RunAs через пользовательский интерфейс. Потому как у меня это дело с одними программами работает, а с автокадом 2000 не работает, причем глючит конкретно. Если пытаюсь его запустить с правами локального админа, то появдяется стартовое окно (типа выбрать новый проект), а когда его закрываешь, то программа в памяти сидит а на экране ничего нет. Если запустить с правами адина домена, то вообще ничего не видно, но программа в памяти появляется. В тоже время через RunAs все работает нормально.
Re: Проблемы с CreateProcessWithLogonW
От: Demon Россия  
Дата: 18.06.03 11:33
Оценка:
Здравствуйте, ДмитрийК, Вы писали:

ДК>Как надо запускать CreateProcessWithLogonW, чтобы он отрабатывал аналогично RunAs через пользовательский интерфейс. Потому как у меня это дело с одними программами работает, а с автокадом 2000 не работает, причем глючит конкретно. Если пытаюсь его запустить с правами локального админа, то появдяется стартовое окно (типа выбрать новый проект), а когда его закрываешь, то программа в памяти сидит а на экране ничего нет. Если запустить с правами адина домена, то вообще ничего не видно, но программа в памяти появляется. В тоже время через RunAs все работает нормально.


А на каких windows station и desktop он запускается?
Попробуй в структуре STARTUPINFO явно задать "WinSta0\Default"
Re[2]: Проблемы с CreateProcessWithLogonW
От: ДмитрийК  
Дата: 18.06.03 11:56
Оценка:
D>А на каких windows station и desktop он запускается?
D>Попробуй в структуре STARTUPINFO явно задать "WinSta0\Default"

Я по описанию lpDesktop не понял, что это такое, но установка его в "WinSta0\Default" привела к тому, что теперь всегда программа невидна.
Re[3]: Проблемы с CreateProcessWithLogonW
От: Demon Россия  
Дата: 18.06.03 12:08
Оценка:
Здравствуйте, ДмитрийК, Вы писали:

D>>А на каких windows station и desktop он запускается?

А на этот вопрос ответа нет?

D>>Попробуй в структуре STARTUPINFO явно задать "WinSta0\Default"

ДК>Я по описанию lpDesktop не понял, что это такое, но установка его в "WinSta0\Default" привела к тому, что теперь всегда программа невидна.
подозреваю что ты написал
lpDesktop = _T("WinSta0\Default")


если нет, то без кода сложно еще что-то предположить
Re[4]: Проблемы с CreateProcessWithLogonW
От: ДмитрийК  
Дата: 18.06.03 12:19
Оценка:
Я пишу на Delphi, вот код

function Run(const cl:string; isWait: TWait = Wait;
              const user: string = ''; const password: string = '';
              const domain: string = ''): DWORD;
var
  si: STARTUPINFO;
  pi: PROCESS_INFORMATION;
  cline: array [0..1000] of WideChar;
  u, p, d: array [0..100] of WideChar;
  Ok: boolean;
begin
  ZeroMemory(@si, sizeof(si));
  si.cb := sizeof(si);
  si.dwFlags := STARTF_USESHOWWINDOW;
  si.wShowWindow := SW_HIDE;
  si.lpDesktop := PChar('WinSta0\Default');
  ZeroMemory(@pi, sizeof(pi));
  if user <> '' then
    Ok := CreateProcessWithLogonW( StringToWideChar(user,u,100),
                                  StringToWideChar(domain,d,100),
                                  StringToWideChar(password,p,100),
                                  1, nil,
                                  StringToWideChar(cl,cline,1000),
                                  0, nil, nil, si, pi)
  else
    Ok := CreateProcess( nil, PChar(cl), nil, nil, false, 0, nil, nil, si, pi );
  if not Ok then
    raise Exception.Create('Fatal error. CreateProcess '+cl);
  if isWait = Wait then
    if WaitForSingleObject( pi.hProcess, INFINITE ) = WAIT_FAILED then
      raise Exception.Create('Fatal error. WaitForSingleObject '+cl);
  if not GetExitCodeThread(pi.hThread,Result) then
    raise Exception.Create('Fatal error. GetExitCodeThread '+cl);
  if Result <> 0 then
    Log.Write('Error', 'ExitCode = '+IntToStr(Result), '', '', '');
  CloseHandle( pi.hProcess );
  CloseHandle( pi.hThread );
end;
Re[5]: Проблемы с CreateProcessWithLogonW
От: ДмитрийК  
Дата: 19.06.03 05:46
Оценка:
Народ, помогите!
Re[6]: Проблемы с CreateProcessWithLogonW
От: ДмитрийК  
Дата: 19.06.03 10:48
Оценка:
Н-да. Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.