2013-02-22 222 views
1

我的环境是Classic ASP。我想将一个事件记录到事件日志中(哪一个并不重要)。我已经构建了一个快速测试(代码如下)并不断获得“权限被拒绝”。使用WScript.Shell.Logevent时出现“Permission Denied”错误

const SUCCESS = 0 
const ERROR = 1 
const WARNING = 2 
const INFORMATION = 4 
const AUDIT_SUCCESS = 8 
const AUDIT_FAILURE = 16 

dim WshShell 
set WshShell = Server.CreateObject("WScript.Shell") 
wshshell.Logevent WARNING, "Test Event Log by Windows Script Host!" 
set wshshell=nothing 
Response.write "Event Logged Successfully by Windows Script Host!" 

我在网上搜索了解决这个问题的方法,并找到了某种答案。不幸的是,他们的解决方案无效。他们说:

将以下注册表项设置为0而不是1,然后重新启动 您的计算机以使更改生效。 HKLM \ System \ CurrentControlSet \ Services \ EventLog \ Application Name: RestrictGuestAccess类型:REG_DWORD注意:这使所有访客 帐户写入到应用程序事件日志。

有没有更好的方法来做到这一点?或者一个真正的解决方案,对此?

本质上,我试图将严重错误记录到某些Windows事件日志中,这将允许监视系统使用它们。

我的操作系统是使用IIS 6.0的Windows Server 2003。

实际的代码将在Windows Server 2008 R2上运行IIS 7.5。

操作系统甚至IIS Web服务器都很重要吗?

+1

我建议你在Win 2008上做你的开发,这是目标操作系统。它不会解决这个问题,但它会在部署代码之前捕获其他潜在的问题。在安全性方面,Win 2008比Win 2003更具有限制性。 – 2013-02-22 17:59:50

+0

我目前正在移植我的环境。这可能会迫使我的手。我会立即着手并更新这个问题的细节。谢谢! – crackedcornjimmy 2013-02-22 18:09:38

回答

1

不要打扰使用传统的ASP和COM对象做契约。而是构建一个SQL存储过程(2005或更高版本)并使用xp_logevent登录到事件日志。

你可以看到如何在http://msdn.microsoft.com/en-us/library/ms186244.aspx

做到这一点。一旦我实现了这个方法,一切工作和我走20分钟编码后自行消失。

+1

如果你不想为你的应用程序整个SQL服务器,该怎么办? – reidLinden 2013-03-21 15:55:37

+0

然后得到一个...;) – crackedcornjimmy 2013-04-12 19:31:03

相关问题