Вот кусок кода: Код (Text): var hStaPrev,hSta:HWINSTA; hDeskPrev,hDesktop:HDESK; begin result:=false; if not GetPriveleges then exit; hStaPrev:=GetProcessWindowStation; hDeskPrev:= GetThreadDesktop(GetCurrentThreadId); hSta:=OpenWindowStation(pchar('Winsta0'), false, GENERIC_ALL); if (hSta<>0) and (SetProcessWindowStation(hSta)) then begin hDesktop:=OpenDesktop(pchar('Winlogon'),0,false,GENERIC_ALL); .......................................................................................... При выполнении под админом в hDesktop 0, GetLastError 5. Из сервиса всё работает. МОжно ли как-то получить нужные привелегии? PS Инджект не предлагать
1. Пуст прога сама себя запустит как сервис. 2. Взять прогу hххp://download.sysinternals.com/Files/ProcessExplorer.zip. Полюбоваться на права доступа к объекту десктопа Winlogon для админа. Увидеть что админу разрешено: удалить, сменить владельца, сменить права доступа. Написать код, изменяющий права доступа к десктопу на "ALL" для адимина, хотя это плохой тон, но так проще
Уже сделал запуск проги как сервиса. Самый просто вариант. НА права доступа конечно смотрел, более того, получил хендл нужного десктопа другим способом и попытался изменить их. Пишет что прав нет. Вобщем лезть туда может тока SYSTEM. Всем спс. А что такое АТ?