Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
[NT] Desktop object, DesktopWindow и прочая странности-несуразности... 13.05.03 02:28 Число просмотров: 1572
Автор: + <Mikhail> Статус: Elderman
|
> Вот, доигрался ;-) > > Сегодня мучал WinNT десктопы и всё с ними связанное, > кое-что так и не понял... > Открыл текущий десктоп (в котором я влогинен), и прочитал > DACL, и вот что я увидел (операционка — WinXP): > > ACCESS_ALLOWED_ACE1: > SID=S-1-5-5-0-1802738 (это что за зверь такой, кто знает?
SID: S-1-5-5-X-Y
Name: Logon Session
Description: A logon session. The X and Y values for these SIDs are different for each session.
> LookUpAccountSID говорит, что идентификатору имя не > сопоставлено); > AccessMask=ALL_ACCESS. > > ACCESS_ALLOWED_ACE2: > SID=«ОГРАНИЧЕННЫЕ (NT AUTHORITY)» (во блин! кто знает > подробнее про этот SID, расскажите, плз.); > AccessMask=ALL_ACCES (в чём их ограничение, известно только > Б.Г. :-). > > ACCESS_ALLOWED_ACE3: > SID=«Administrators (BUILTIN)» > AccessMask= > DESKTOP_READOBJECTS | DESKTOP_CREATEWINDOW | > DESKTOP_CREATEMENU | > DESKTOP_ENUMERATE | DESKTOP_WRITEOBJECTS | > DESKTOP_SWITCHDESKTOP > Как видим, администраторы самые урезанные в правах на > десктоп. Не включены права DESKTOP_HOOKCONTROL, > DESKTOP_JOURNALRECORD, DESKTOP_JOURNALPLAYBACK, что > странно... > > ACCESS_ALLOWED_ACE4: > SID=«SYSTEM - (NT AUTHORITY)» > AccessMask=ALL_ACCESS (ну, система, это понятно); > > Непонятны мне две вещи. Первое — загадочный SID (см. выше). > Второе — я полез ковырять объект десктопа из-за того, что > не смог прикрутить region к DesktopWindow. Вот этот > фрагмент не работает >
> procedure TForm1.Button1Click(Sender: TObject);
> Var
> aWnd: HWND;
> aReg: HRGN;
> begin
> aReg := CreateEllipticRgn(0, 0, 1024, 768);
> Win32Check(aReg <> 0);
> Try
> aWnd := GetDesktopWindow;
> Win32Check(SetWindowRgn(aWnd, aReg, True) <> 0);
> // ^^^^ Вот тут валится с ошибкой. SetWindowRgn
> возвращает 0,
> // причём GetLastError = ERROR_SUCCESS.
> Except
> DeleteObject(aReg);
> Raise;
> End;
> end;
> ---
> Из чего я делаю вывод, что DesktopWindow это какое-то > «неполноценное» окно, или OS особым образом его защищает. У > кого какие мысли по этому поводу? Можно ли прикрутить > region к DesktopWindow? > Кстати, рулит этим окном CSRSS.EXE, может из-за того, что > он работает под LOCALSYSTEM, OS не даёт модифицировать его > окна? Хотя я запустил своё тестовое приложение под SrvAny > под Localsystem, там такая же песня... > > Заранее всем спасибо за советы. > >_______________________ > В великой мудрости великая печаль, и кто умножает познания, > умножает и скорбь... > (C) Экклезиаст — мудрый и печальный ;-)
Well-Known SIDs
|
<operating systems>
|
[NT] Desktop object, DesktopWindow и прочая странности-несуразности... 12.05.03 23:40
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 12.05.03 23:50 Количество правок: 1
|
Вот, доигрался ;-)
Сегодня мучал WinNT десктопы и всё с ними связанное, кое-что так и не понял...
Открыл текущий десктоп (в котором я влогинен), и прочитал DACL, и вот что я увидел (операционка — WinXP):
ACCESS_ALLOWED_ACE1:
SID=S-1-5-5-0-1802738 (это что за зверь такой, кто знает? LookUpAccountSID говорит, что идентификатору имя не сопоставлено);
AccessMask=ALL_ACCESS.
ACCESS_ALLOWED_ACE2:
SID=«ОГРАНИЧЕННЫЕ (NT AUTHORITY)» (во блин! кто знает подробнее про этот SID, расскажите, плз.);
AccessMask=ALL_ACCES (в чём их ограничение, известно только Б.Г. :-).
ACCESS_ALLOWED_ACE3:
SID=«Administrators (BUILTIN)»
AccessMask=
DESKTOP_READOBJECTS | DESKTOP_CREATEWINDOW | DESKTOP_CREATEMENU |
DESKTOP_ENUMERATE | DESKTOP_WRITEOBJECTS | DESKTOP_SWITCHDESKTOP
Как видим, администраторы самые урезанные в правах на десктоп. Не включены права DESKTOP_HOOKCONTROL, DESKTOP_JOURNALRECORD, DESKTOP_JOURNALPLAYBACK, что странно...
ACCESS_ALLOWED_ACE4:
SID=«SYSTEM - (NT AUTHORITY)»
AccessMask=ALL_ACCESS (ну, система, это понятно);
Непонятны мне две вещи. Первое — загадочный SID (см. выше).
Второе — я полез ковырять объект десктопа из-за того, что не смог прикрутить region к DesktopWindow. Вот этот фрагмент не работает
procedure TForm1.Button1Click(Sender: TObject);
Var
aWnd: HWND;
aReg: HRGN;
begin
aReg := CreateEllipticRgn(0, 0, 1024, 768);
Win32Check(aReg <> 0);
Try
aWnd := GetDesktopWindow;
Win32Check(SetWindowRgn(aWnd, aReg, True) <> 0);
// ^^^^ Вот тут валится с ошибкой. SetWindowRgn возвращает 0,
// причём GetLastError = ERROR_SUCCESS.
Except
DeleteObject(aReg);
Raise;
End;
end;
---
Из чего я делаю вывод, что DesktopWindow это какое-то «неполноценное» окно, или OS особым образом его защищает. У кого какие мысли по этому поводу? Можно ли прикрутить region к DesktopWindow?
Кстати, рулит этим окном CSRSS.EXE, может из-за того, что он работает под LOCALSYSTEM, OS не даёт модифицировать его окна? Хотя я запустил своё тестовое приложение под SrvAny под Localsystem, там такая же песня...
Заранее всем спасибо за советы.
_________________________
В великой мудрости великая печаль, и кто умножает познания, умножает и скорбь...
(C) Экклезиаст — мудрый и печальный ;-)
|
 |
[NT] Desktop object, DesktopWindow и прочая странности-несуразности... 13.05.03 02:28
Автор: + <Mikhail> Статус: Elderman
|
> Вот, доигрался ;-) > > Сегодня мучал WinNT десктопы и всё с ними связанное, > кое-что так и не понял... > Открыл текущий десктоп (в котором я влогинен), и прочитал > DACL, и вот что я увидел (операционка — WinXP): > > ACCESS_ALLOWED_ACE1: > SID=S-1-5-5-0-1802738 (это что за зверь такой, кто знает?
SID: S-1-5-5-X-Y
Name: Logon Session
Description: A logon session. The X and Y values for these SIDs are different for each session.
> LookUpAccountSID говорит, что идентификатору имя не > сопоставлено); > AccessMask=ALL_ACCESS. > > ACCESS_ALLOWED_ACE2: > SID=«ОГРАНИЧЕННЫЕ (NT AUTHORITY)» (во блин! кто знает > подробнее про этот SID, расскажите, плз.); > AccessMask=ALL_ACCES (в чём их ограничение, известно только > Б.Г. :-). > > ACCESS_ALLOWED_ACE3: > SID=«Administrators (BUILTIN)» > AccessMask= > DESKTOP_READOBJECTS | DESKTOP_CREATEWINDOW | > DESKTOP_CREATEMENU | > DESKTOP_ENUMERATE | DESKTOP_WRITEOBJECTS | > DESKTOP_SWITCHDESKTOP > Как видим, администраторы самые урезанные в правах на > десктоп. Не включены права DESKTOP_HOOKCONTROL, > DESKTOP_JOURNALRECORD, DESKTOP_JOURNALPLAYBACK, что > странно... > > ACCESS_ALLOWED_ACE4: > SID=«SYSTEM - (NT AUTHORITY)» > AccessMask=ALL_ACCESS (ну, система, это понятно); > > Непонятны мне две вещи. Первое — загадочный SID (см. выше). > Второе — я полез ковырять объект десктопа из-за того, что > не смог прикрутить region к DesktopWindow. Вот этот > фрагмент не работает >
> procedure TForm1.Button1Click(Sender: TObject);
> Var
> aWnd: HWND;
> aReg: HRGN;
> begin
> aReg := CreateEllipticRgn(0, 0, 1024, 768);
> Win32Check(aReg <> 0);
> Try
> aWnd := GetDesktopWindow;
> Win32Check(SetWindowRgn(aWnd, aReg, True) <> 0);
> // ^^^^ Вот тут валится с ошибкой. SetWindowRgn
> возвращает 0,
> // причём GetLastError = ERROR_SUCCESS.
> Except
> DeleteObject(aReg);
> Raise;
> End;
> end;
> ---
> Из чего я делаю вывод, что DesktopWindow это какое-то > «неполноценное» окно, или OS особым образом его защищает. У > кого какие мысли по этому поводу? Можно ли прикрутить > region к DesktopWindow? > Кстати, рулит этим окном CSRSS.EXE, может из-за того, что > он работает под LOCALSYSTEM, OS не даёт модифицировать его > окна? Хотя я запустил своё тестовое приложение под SrvAny > под Localsystem, там такая же песня... > > Заранее всем спасибо за советы. > >_______________________ > В великой мудрости великая печаль, и кто умножает познания, > умножает и скорбь... > (C) Экклезиаст — мудрый и печальный ;-)
Well-Known SIDs
|
 |  |
[NT] Про session SID понятно, спасибо... Остался вопрос про то, как прикрутить регион к DesktopWindow :-( 13.05.03 14:17
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
|
|