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" пока не понял.