桌面安全性和访问权限

通过安全性,你可以控制对桌面对象的访问。 有关安全性的详细信息,请参阅 Access-Control 模型

调用 CreateDesktopCreateDesktopEx 函数时,可以为桌面对象指定 安全描述符。 如果指定 NULL,桌面将获取默认的安全描述符。 桌面的默认安全描述符中的 ACL 来自其父窗口工作站。

若要获取或设置窗口工作站对象的安全描述符,请调用 GetSecurityInfoSetSecurityInfo 函数。

调用 OpenDesktopOpenInputDesktop 函数时,系统会根据对象的安全描述符检查请求的访问权限。

桌面对象的有效访问权限包括 标准访问权限 和某些特定于对象的访问权限。 下表列出了所有对象使用的标准访问权限。

价值 意义
DELETE (0x00010000L) 需要删除对象。
READ_CONTROL (0x00020000L) 在对象的安全描述符中读取信息(不包括 SACL 中的信息)所必需的。 若要读取或写入 SACL,必须请求ACCESS_SYSTEM_SECURITY访问权限。 有关详细信息,请参阅 SACL 访问权限
SYNCHRONIZE (0x001000000L) 桌面对象不支持。
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_ENUMERATE
DESKTOP_READOBJECTS
STANDARD_RIGHTS_READ
GENERIC_WRITE
DESKTOP_CREATEMENU
DESKTOP_CREATEWINDOW
DESKTOP_HOOKCONTROL
DESKTOP_JOURNALPLAYBACK
DESKTOP_JOURNALRECORD
DESKTOP_WRITEOBJECTS
STANDARD_RIGHTS_WRITE
GENERIC_EXECUTE
DESKTOP_SWITCHDESKTOP
STANDARD_RIGHTS_EXECUTE
GENERIC_ALL
DESKTOP_CREATEMENU
DESKTOP_CREATEWINDOW
DESKTOP_ENUMERATE
DESKTOP_HOOKCONTROL
DESKTOP_JOURNALPLAYBACK
DESKTOP_JOURNALRECORD
DESKTOP_READOBJECTS
DESKTOP_SWITCHDESKTOP
DESKTOP_WRITEOBJECTS
STANDARD_RIGHTS_REQUIRED

 

如果要读取或写入对象的 SACL,可以请求对桌面对象的ACCESS_SYSTEM_SECURITY访问权限。 有关详细信息,请参阅 Access-Control 列表(ACL)SACL 访问权限