1

当我的一台服务器上的可用磁盘空间小于指定值时,我正在尝试设置警报以通过电子邮件 (SMTP) 通知我。为此,我使用了 PerfMon 警报,如MSFT Technet中所述。我有警报工作并写入系统日志,但是当我尝试将其设置为“运行程序”时它失败了。日志警报触发,但程序失败。

我正在使用的程序是我编写的用于发送 smtp 电子邮件的小型 C# 应用程序。我已经独立于该服务器测试了该应用程序,手动运行它并且工作正常,无需任何用户交互(控制台应用程序)。但是当我将它设置为通过警报触发器运行时,它会失败。

4

2 回答 2

1

可能是您的程序没有命令行参数吗?我在http://support.microsoft.com/kb/324752/en-us上找到了以下内容

发生警报时,服务会创建一个进程并运行指定的命令文件。该服务还将您定义的任何命令行参数复制到用于运行文件的命令行。单击命令行参数,然后单击以选中相应的复选框以包括程序运行时所需的参数。

注意 您必须至少选择一个命令行参数,否则程序将无法运行。(无论您选择什么程序,这都是正确的。)

如果在您的 C# 应用程序中处理/记录异常,您有什么办法吗?你能从中得到什么吗?

你能把你的 C# 应用程序调用放在一个批处理文件中并从警报开始吗?如果你添加类似的东西

echo %date% %time% > log.txt

在批处理文件的开头,您可以查看它是否已启动。

于 2008-11-18T23:44:56.717 回答
1

您是否在警报属性中设置了运行方式字段?如果没有,您的程序将作为 LocalService 运行,它没有网络访问权限(除其他外)。

尝试将其设置为能够验证程序是否正常运行的用户帐户。

于 2008-11-19T17:54:31.820 回答