尝试创建自定义事件日志时,将会收到“Requested registry access is not allowed(不允许所请求的注册表访问权)”错误消息
EventLog.CreateEventSource()
如果以普通用户身份登录计算机,并尝试使用 Microsoft Visual Studio .NET 创建自定义事件日志以注册事件,可能会收到以下错误消息:
An unhandled exception of type ‘System.Security.SecurityException’ occurred in mscorlib.dll
Additional information:Requested registry access is not allowed.
出现此问题的原因在于登录所用的用户帐户没有足够的权限。
首次调用 EventLog.CreateEventSource() 方法创建自定义事件日志时,将会在下面的注册表子项下创建自定义事件日志条目:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlog
要创建此子项条目,必须拥有写权限。但是,普通用户帐户没有写权限。因此,会收到“症状”部分中提到的错误消息。
警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证可以解决这些问题。修改注册表需要您自担风险。
要解决此问题,请使用下列方法之一:
授予创建自定义事件日志的权限
以管理员身份安装自定义事件日志
授予创建自定义事件日志的权限
以管理员身份登录计算机。
依次单击“开始”和“运行”,在“打开”框中键入 regedit,然后单击“确定”。这将打开“注册表编辑器”窗口。
找到以下注册表子项:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlog
右键单击“Eventlog”,然后单击“权限”。这将显示“Eventlog 的权限”对话框。
单击“高级”。此时显示“Eventlog 的高级安全设置”对话框。
在“名称”列中,双击“Users”组。这将显示“Eventlog 的权限项目”对话框。
依次选中“设置数值”和“创建子项”复选框,然后单击“确定”。
退出注册表编辑器,然后从管理员帐户中注销。
以普通用户身份登录计算机。
尝试使用 Visual Studio .NET 创建自定义事件日志,然后尝试使用基于 Visual Studio .NET 构建的应用程序写入此事件日志。
以管理员身份安装自定义事件日志
以管理员身份登录计算机。
使用 Visual Studio .NET 中的 CreateEventSource 方法创建自定义事件日志和事件日志源。
从管理员帐户注销。
以普通用户身份登录计算机。
通过运行应用程序将条目写入自定义事件日志。