EventAccessControl 函数 (evntcons.h)

添加或修改指定提供程序或会话的权限。

语法

ULONG EVNTAPI EventAccessControl(
  [in] LPGUID  Guid,
  [in] ULONG   Operation,
  [in] PSID    Sid,
  [in] ULONG   Rights,
  [in] BOOLEAN AllowOrDeny
);

参数

[in] Guid

用于唯一标识要添加或修改其权限的提供程序或会话的 GUID。

[in] Operation

要执行的操作类型,例如,将 DACL 添加到会话的 GUID 或提供程序的 GUID。 有关可能的值,请参阅 EVENTSECURITYOPERATION 枚举。

[in] Sid

安全标识符 (要向其授予或拒绝权限的用户或组的 SID) 。

[in] Rights

可以指定以下一个或多个权限:

Value 含义
WMIGUID_QUERY
允许用户查询有关跟踪会话的信息。 在会话的 GUID 上设置此权限。
TRACELOG_CREATE_REALTIME
允许用户启动或更新实时会话。 在会话的 GUID 上设置此权限。
TRACELOG_CREATE_ONDISK
允许用户启动或更新将事件写入日志文件的会话。 在会话的 GUID 上设置此权限。
TRACELOG_GUID_ENABLE
允许用户启用提供程序。 在提供程序的 GUID 上设置此权限。
TRACELOG_ACCESS_KERNEL_LOGGER
未使用。
TRACELOG_LOG_EVENT
如果会话在 SECURE 模式下运行,则允许用户将事件记录到跟踪会话, (会话在 EVENT_TRACE_PROPERTIES) 的 LogFileMode 成员中设置EVENT_TRACE_SECURE_MODE标志。
TRACELOG_ACCESS_REALTIME
允许用户实时使用事件。 在会话的 GUID 上设置此权限。
TRACELOG_REGISTER_GUIDS
允许用户注册提供程序。 在提供程序的 GUID 上设置此权限。

[in] AllowOrDeny

如果 为 TRUE,则向用户授予对会话或提供程序的权限;否则,请拒绝权限。 如果 Operation 的值为 EventSecuritySetSACL 或 EventSecurityAddSACL,则忽略此值。

返回值

如果成功,则返回ERROR_SUCCESS。

备注

默认情况下,只有计算机的管理员、“性能日志用户”组中的用户以及作为 LocalSystem、LocalService、NetworkService 运行的服务可以控制跟踪会话,并提供和使用事件数据。 只有具有管理权限和以 LocalSystem 身份运行的服务的用户才能启动和控制 NT 内核记录器会话。

Windows Server 2003: 只有具有管理员特权的用户才能控制跟踪会话和使用事件数据;任何用户都可以提供事件数据。

Windows XP 和 Windows 2000: 任何用户都可以控制跟踪会话,并提供和使用事件数据。

如果用于控制会话的工具是从命令提示符窗口启动的,而命令提示符窗口是使用“ 以管理员身份运行...”打开的,则具有管理员特权的用户可以控制跟踪会话。

若要授予受限用户控制跟踪会话的能力,可以将他们添加到“性能日志用户”组或调用此函数来授予他们权限。 例如,可以向用户 A 授予启动和停止跟踪会话的权限,并授予用户 B 仅查询会话的权限。

若要限制可以将事件记录到会话的人员,请参阅TRACELOG_LOG_EVENT权限。

日志文件上的 ACL 确定谁可以使用日志文件中的事件数据。 若要实时使用会话中的事件,必须授予用户TRACELOG_ACCESS_REALTIME权限,或者用户必须是性能日志用户组的成员。

还可以指定提供程序的 GUID,以限制谁可以注册提供程序以及谁可以启用提供程序。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 evntcons.h
Library Windows 8.1 和 Windows Server 2012 上的 Sechost.lib;Windows 8.1 和 Windows Server 2012 R2 上的 Sechost.lib;Windows 8、Windows Server 2012、Windows 7、Windows Server 2008 R2、Windows Server 2008 和 Windows Vista 上的 Advapi32.lib
DLL Windows 8.1 和 Windows Server 2012 上的 Sechost.dll;Windows 8、Windows Server 2012、Windows 7、Windows Server 2008 R2、Windows Server 2008 和 Windows Vista 上的 Advapi32.dll

请参阅

EventAccessQuery

EventAccessRemove