I have written a windows service and has set its startup type to be \'Automatic\'. But after installing the service a user can change its type to \'disabled\'.
Is there
see ServiceController.Status Property
You can't really prevent the user from disabling it, except with operating system permissions, unless you're going to be the only admin for the box, you're not going to have that kind of control.
You can use a 3rd-party monitoring tool such as Nagios to monitor services across all your servers, and alert you when they stop running. This has other benefits as it also allows you to monitor many other things, such as MSMQ queue lengths, disk space and memory usage (in fact anything in the performance counters).
There is no API for doing this, but you can check the service start mode in the registry, at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName\Start. That value will be either 2 (automatic), 3 (manual), or 4 (disabled).