I have some custom programs I've written to do various maintenance/monitoring tasks that I run periodically (some every few minutes, some as little as once a day). Is it a better practice to run them out of the task scheduler, or to run them as a windows service (triggered by an embedded timer object)?
EDIT: I somehow assumed you were looking for a .NET solution. If not, then please disregard my answer.
If you want to use your own windows service, then have a look at Quartz.NET:
Quartz.NET is a full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems.
With this library you get the flexibility of the windows task scheduler for free, but can run your own service.
Here's an interesting article about services vs. sheduled tasks.
http://weblogs.asp.net/jgalloway/archive/2005/10/24/428303.aspx
I think for simple/one-off type scheduled processing, it's easier to just write a console app and run it as windows scheduled task.
However, most of the time, I end up writing a service, just so all of our services run the same way. Like Martin said Quartz.NET is really powerful for writing scheduled services, and gives you more flexibility than plain scheduled tasks.