Also I would like to ask if my app is not running then can I create a daemon process to keep a check on this(assuming that this process runs all the time).
The situation is something like this:
The user changes the sys date from 1 January 2012 to 1 January 2013, but the application should still use 1 January 2012.
I am using a Windows operating system.
There is no reliable way to keep track of time without rely on system time or from an external source(web service or NTP), since the date could be tampered by the user in several different way.
Your assumed option to keep track of the time with a background service can’t prevent a time change during a reboot(e.g. from BIOS), so what is the purpose to keep internal time ?
It is related to a copy protection system (like trial time limit)?
If so you can take a look at a library like CryptoLicensing that claim to have a Detects Date Tampering algoritm and can be useful for you.
However i think that the way should be try to detect Date/Time tempering rather than trying to keep track of time by yourself…