Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Внизпроблемы с CreateProcessAsUser Найти похожие ветки
← →
CrytoGen (2004-02-25 14:11) [0]возникает проблема с вызовом функции CreateProcessAsUser.
нормально проходит вызов LogonUser, а при вызове CreateProcessAsUser появляется ошибка "Клиент не обладает требуемыми правами".
Может кто-нибудь сталкивался с подобной проблемой?
где что настроить?
← →
Игорь Шевченко © (2004-02-25 14:24) [1]If your process has the SE_TCB_NAME privilege, it can call the LogonUser function to get a primary token that represents a specified user.
Я сильно сомневаюсь, что у тебя есть эта привилегия.
Попробуй посмотреть в сторону CreateProcessWithLogonW
← →
CrytoGen (2004-02-25 14:35) [2]эту привилегию я получаю, и вроде бы получение происходит нормально, кроме того ошибка в этом случае бы возникала при вызове LogonUser...
← →
Игорь Шевченко © (2004-02-25 14:39) [3]CrytoGen (25.02.04 14:35)
> эту привилегию я получаю
Научи ? :)
← →
CrytoGen (2004-02-25 14:40) [4]:)
кроме того я не нашёл CreateProcessWithLogonW в Delphi
← →
Игорь Шевченко © (2004-02-25 14:48) [5]CrytoGen (25.02.04 14:40)
Может быть, тебе только кажется, что ты ее получаешь ?
Кстати, неплохо бы и код привести...function CreateProcessWithLogonW (const lpUsername : PWideChar;
const lpDomain : PWideChar; const lpPassword : PWideChar;
dwLogonFlags : DWORD; const lpApplicationName : PWideChar;
lpCommandLine : PWideChar; dwCreationFlags : DWORD;
lpEnvironment : Pointer; const lpCurrentDirectory : PWideChar;
lpStartupInfo : PStartupInfo;
lpProcessInfo : PProcessInformation) : Boolean; stdcall;
external "advapi32.dll" name "CreateProcessWithLogonW"
← →
CrytoGen (2004-02-25 14:52) [6]функция не возвращает ошибки
...
function SetPrivilege(aPrivilegeName:String;aEnabled:boolean):boolean;
var TPPrev,TP:TTokenPrivileges;
Token:THandle;
dwRetLen:DWord;
begin
Result:=False;
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,Token);
TP.PrivilegeCount:=1;
if (LookupPrivilegeValue(nil,PChar(aPrivilegeName),TP.Privileges[0].LUID)) then
begin
if aEnabled then
TP.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED
else
TP.Privileges[0].Attributes:=0;
dwRetLen:=0;
Result:=AdjustTokenPrivileges(Token,False,TP,SizeOf(TPPrev),TPPrev,dwRetLen);
Win32Check(Result);
end;
CloseHandle(Token);
end;
begin
if SetPrivilege("SeTcbPrivilege",True) then
begin
...
← →
Игорь Шевченко © (2004-02-25 15:02) [7]CrytoGen (25.02.04 14:52)
Вставь после строчки
Win32Check(Result)
строчки
if GetLastError <> ERROR_SUCCESS then
Result := false;
Будешь приятно удивлен.
← →
CrytoGen (2004-02-25 15:06) [8]уже поздно, я всё переделал... :) под CreateProcessWithLogonW
странная вещь...
консольное приложение запущенное таким образом не создаёт файл, а вот запущенное обычным образом создаёт :)
← →
Игорь Шевченко © (2004-02-25 15:08) [9]
> консольное приложение запущенное таким образом не создаёт
> файл, а вот запущенное обычным образом создаёт
Если бы ты выражал свои мысли более понятным образом, я бы попытался понять проблему. К сожалению, я не вижу твоего экрана и событий, происходящих на нем, поэтому мне трудно дать какую-либо консультацию.
← →
CrytoGen (2004-02-25 16:03) [10]Новая ошибка...
"Наложение ввода вывода", что это может быть?
и как с этим бороться?
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c