桌面安全和访问权限
安全性使你能够控制对桌面对象的访问。 有关安全性的详细信息,请参阅 访问控制模型。
调用 CreateDesktop 或 CreateDesktopEx 函数时,可以为桌面对象指定安全描述符。 如果指定 NULL,桌面将获取默认的安全描述符。 桌面的默认安全描述符中的 ACL 来自其父窗口工作站。
若要获取或设置窗口站对象的安全描述符,请调用 GetSecurityInfo 和 SetSecurityInfo 函数。
调用 OpenDesktop 或 OpenInputDesktop 函数时,系统会根据对象的安全描述符检查请求的访问权限。
桌面对象的有效访问权限包括 标准访问权限 和某些特定于对象的访问权限。 下表列出了所有对象使用的标准访问权限。
值 | 含义 |
---|---|
DELETE (0x00010000L) | 删除对象所必需的。 |
READ_CONTROL (0x00020000L) | 需要读取对象的安全描述符中的信息,不包括 SACL 中的信息。 若要读取或写入 SACL,必须请求ACCESS_SYSTEM_SECURITY访问权限。 有关详细信息,请参阅 SACL 访问权限。 |
同步 (0x00100000L) | 桌面对象不支持。 |
WRITE_DAC (0x00040000L) | 需要修改对象的安全描述符中的 DACL。 |
WRITE_OWNER (0x00080000L) | 需要更改对象的安全描述符中的所有者。 |
下表列出了特定于对象的访问权限。
访问权限 | 说明 |
---|---|
DESKTOP_CREATEMENU (0x0004L) | 在桌面上创建菜单所必需的。 |
DESKTOP_CREATEWINDOW (0x0002L) | 在桌面上创建窗口所必需的。 |
DESKTOP_ENUMERATE (0x0040L) | 枚举桌面所必需的。 |
DESKTOP_HOOKCONTROL (0x0008L) | 需要建立任何窗口挂钩。 |
DESKTOP_JOURNALPLAYBACK (0x0020L) | 在桌面上执行日记播放所必需的。 |
DESKTOP_JOURNALRECORD (0x0010L) | 在桌面上执行日记录制所必需的。 |
DESKTOP_READOBJECTS (0x0001L) | 读取桌面上的对象所必需的。 |
DESKTOP_SWITCHDESKTOP (0x0100L) | 需要使用 SwitchDesktop 函数激活桌面。 |
DESKTOP_WRITEOBJECTS (0x0080L) | 在桌面上写入对象所必需的。 |
下面是用户登录会话的交互式窗口工作站中包含的桌面对象的 通用访问权限 。
访问权限 | 说明 |
---|---|
GENERIC_READ |
DESKTOP_READOBJECTS STANDARD_RIGHTS_READ |
GENERIC_WRITE |
DESKTOP_CREATEWINDOW DESKTOP_HOOKCONTROL DESKTOP_JOURNALPLAYBACK DESKTOP_JOURNALRECORD DESKTOP_WRITEOBJECTS STANDARD_RIGHTS_WRITE |
GENERIC_EXECUTE |
STANDARD_RIGHTS_EXECUTE |
GENERIC_ALL |
DESKTOP_CREATEWINDOW DESKTOP_ENUMERATE DESKTOP_HOOKCONTROL DESKTOP_JOURNALPLAYBACK DESKTOP_JOURNALRECORD DESKTOP_READOBJECTS DESKTOP_SWITCHDESKTOP DESKTOP_WRITEOBJECTS STANDARD_RIGHTS_REQUIRED |
如果要读取或写入对象的 SACL,可以请求对桌面对象的ACCESS_SYSTEM_SECURITY访问权限。 有关详细信息,请参阅 访问控制列表 (ACL) 和 SACL 访问权限。