CreateProcessWithLogonW Ошибка 1783 в Windows 2003

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

CreateProcessWithLogonW Ошибка 1783 в Windows 2003

Сообщение cepreu » 21.09.2007 22:42:39

Всеп привет!
Вот какя проблемы:

Код:

Код: Выделить всё
function GetLastErrorText(Error: DWord): string;
begin
  SetLength(Result, 1024);
  if FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, Error, 0, @Result[1], Length(Result), nil) <> 0 then
   begin
    if Pos(#0, Result)> 0 then SetLength(Result, Pos(#0, Result) - 1);
   end
  else
   Result := 'Unknown error';
   Result := Format('Error %d: %s', [Error, Trim(Result)]);
  end;
Procedure TRunAs.ExecWinLogonClick(Sender: TObject);
Var
  Result: Boolean;
  si: TSTARTUPINFOW;
  pif: PROCESS_INFORMATION;
  User: PWideChar;
  Pass: PWideChar;
  Prog: PWideChar;
Begin
  si. cb := SizeOf(tstartupinfo);
  si. dwFlags  := STARTF_USESHOWWINDOW;
// si. wShowWindow := SW_SHOWDEFAULT;
  si. lpReserved := nil;
  si. lpDesktop  := nil;
  si. lpTitle := nil;
  User := PWideChar (WideString (UserName. Text));
  Pass := PWideChar (WideString (UserPass. Text));
  Prog := PWideChar (WideString (FileName. Text));
  Result := CreateProcessWithLogonW (
   User, nil,
   Pass, LOGON_WIth_profile, nil,
   Prog, 0, nil, nil, si, pif);
   If not Result Then ShowMessage ('Îøèáêà: ' + GetLastErrorText(GetLastError));
End;

под WindowsXP работает бес проблем,
но под Windows 2003 Enterprise SP1 выдает ошибку 1783 (Неверные данные переданные Заглушке)
Смотрел на форумах, говорят нужно обновления вроде проблема Microsoft. Обновил до SP2. Проблема осталась.
Есть программа работающая на данной функции под 2003, в ней проблем нету. Может что я не доделал, понять немогу в чем собака зарыта
cepreu
новенький
 
Сообщения: 24
Зарегистрирован: 01.05.2007 13:20:15
Откуда: г.Киев

Сообщение cepreu » 23.09.2007 20:46:11

Нашел !!!

Если интересно:
Старый вариант (Работал только в XP)
...
Begin
si. cb := SizeOf(tstartupinfo);
si. dwFlags := STARTF_USESHOWWINDOW;
...


Новый варинт (Работает XP и 2003)
...
Begin
ZeroMemory(@Si,Sizeof(si));
ZeroMemory(@pif, SizeOf (pif)); // не достающей строки для 2003
si. cb := SizeOf(tstartupinfo);
si. dwFlags := STARTF_USESHOWWINDOW;
...


Но функция CreateProcessWithLonon () возвращает False (процесс не запущен) Код ошибки не выдается (наверное 0), но окно процесса появляется
cepreu
новенький
 
Сообщения: 24
Зарегистрирован: 01.05.2007 13:20:15
Откуда: г.Киев


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru