桌面安全性和访问权限

安全性使你能够控制对桌面对象的访问。 有关安全性详细信息,请参阅 访问控制模型

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

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

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

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

含义
DELETE (0x00010000L) 删除 对象时必需。
READ _ CONTROL (0x00020000L) 读取对象的安全描述符中的信息(不包括 SACL 中的信息)时必需。 若要读取或写入 SACL,必须请求 ACCESS _ SYSTEM _ SECURITY 访问权限。 有关详细信息,请参阅 SACL Access Right
SYNCHRONIZE (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_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 访问权限。 有关详细信息,请参阅 访问控制列表 (ACL ) SACL 访问权限