Конференция "WinAPI" » CreateProcessAsUser error [D7]
 
  • istok20 © (09.07.09 14:22) [0]
    Windows 7 RC 32bit, вызываю CreateProcessAsUser из сервиса:


    CreateProcessAsUser(hNewToken, nil, PChar('\"C:\Program Files\MyProgram\myprogram.exe\" /param1'), nil, nil,
         false, CREATE_DEFAULT_ERROR_MODE, nil, nil, si, pi);



    параметры формирую так:

    var
     hToken, hNewToken: Cardinal;
     si: TStartupInfo;
     pi: TProcessInformation;
    ...
     if not OpenProcessToken(GetCurrentProcess, TOKEN_QUERY or TOKEN_DUPLICATE, hToken) then
     Exit;
     

     if not DuplicateTokenEx(hToken, MAXIMUM_ALLOWED, nil, SecurityIdentification,
       TokenPrimary, hNewToken) then
       Exit;

     if not SetTokenInformation(hNewToken,
       TTokenInformationClass(12), @SessionId, SizeOf(Cardinal)) then
       Exit;

     FillChar(si,SizeOf(si),0);
       with Si do begin
         cb := SizeOf(Si);
         dwFlags := startf_UseShowWindow;
         wShowWindow := SW_NORMAL;
         lpDesktop := PChar('winsta0\default');
       end;



    SessionId - подается извне, равен 1 (интерактивная сессия юзера).

    в резудьтате вызова CreateProcessAsUser  получаю error 1813, с сообщением The specified resource type cannot be found in the image file.

    если вызывать без параметра командной строки /param1, то работает нормально. иногда если сменить параметр на другой и поперезапускать сервис, то тоже работает, но после ребута при валится та же ошибка. в других windows работает нормально.

    в чем может быть причина? гуглил, но что такое "The specified resource type cannot be found in the image file" пока не понял.
  • clickmaker © (09.07.09 15:02) [1]
    > если вызывать без параметра командной строки /param1, то
    > работает нормально

    а для чего параметр?
  • istok20 © (09.07.09 18:12) [2]
    для того чтоб моя программа словила его и приняла определенные действия - а какое это имеет значение?
  • clickmaker © (10.07.09 11:12) [3]
    > а какое это имеет значение?

    а почему тогда "если вызывать без параметра командной строки /param1, то работает нормально"?
 
Конференция "WinAPI" » CreateProcessAsUser error [D7]
Есть новые Нет новых   [134434   +26][b:0][p:0.002]