我正在尝试设置警报,以便在我的某台服务器上的可用磁盘空间小于指定值时通过电子邮件(SMTP)通知我。为此,我正在使用PerfMon警报,如MSFT Technet所述。我有警报工作并写入系统日志,但当我尝试将其设置为“运行程序”时它失败了。日志警报触发,但程序失败。
我正在使用的程序是我编写的一个小型C#应用程序,用于发送smtp电子邮件。我已经从该服务器独立测试了该应用程序,手动运行它并且工作正常,没有任何用户交互(控制台应用程序)。但是当我将它设置为通过警报触发器运行时,它会失败。
答案 0 :(得分:1)
你的程序没有命令行参数吗? 我在http://support.microsoft.com/kb/324752/en-us
上找到了以下内容发生警报时,服务会创建进程并运行指定的命令文件。该服务还会将您定义的任何命令行参数复制到用于运行该文件的命令行。单击命令行参数,然后单击以选中相应的复选框以包括程序运行时所需的参数。
注意您必须至少选择一个命令行参数,否则程序将无法运行。 (无论您选择了哪个程序,都是如此。)
如果您的C#应用程序中有异常处理/日志记录,您是否有某种类型?你从中获得了什么吗?
您可以将C#app调用放入批处理文件中并从警报启动吗?如果您添加类似
的内容echo %date% %time% > log.txt
在批处理文件的开头,您可以看到它是否已开始。
答案 1 :(得分:1)
您是否在警报属性中设置了运行方式字段?如果没有,您的程序将作为LocalService运行,该服务没有网络访问权限(等等)。
尝试将其设置为用户帐户,在该帐户下您可以验证程序是否正常运行。