Requested registry access is not allowed(不允许所请求的注册表访问权)
今天在写一个Service程序时候遇到这个问题,因为在自己的装XP的本本上测试OK,部署到装windows server 2003服务器上居然出现这个问题,猜测应该是权限管理问题。
问题出现在如下创建一个EventLog的代码中,
- public void LogEvent(String Message, EventLogEntryType type)
- {
- string source = "DemoSource";
- if (!EventLog.SourceExists(source))
- {
- EventLog.CreateEventSource(source, "DemoLog");
- }
- _log = new EventLog();
- _log.Source = source;
- LogEvent(Message, type);
- }
因为是使用VS调试的,就想还是用管理员权限来跑一下试试(i.e. Run as administrator),结果果然很灵光,顺利通过。
然后去谷哥上Search一下:
EventLog.CreateEventSource() 如果以普通用户身份登录计算机,并尝试使用 Microsoft Visual Studio .NET 创建自定义事件日志以注册事件,可能会收到以下错误消息: An unhandled exception of type 'System.Security.SecurityException' occurred in mscorlib.dll 出现此问题的原因在于登录所用的用户帐户没有足够的权限。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog 要创建此子项条目,必须拥有写权限。但是,普通用户帐户没有写权限。因此,会收到“症状”部分中提到的错误消息。 警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证可以解决这些问题。修改注册表需要您自担风险。
授予创建自定义事件日志的权限
以管理员身份安装自定义事件日志
|
问题清楚了,而且还找到了事件日志在注册表中位置,下次可以直接删除你不想要的测试日志了。