Mawg
Mawg

Reputation: 40185

How to prevent user changing system date/time (in Windows 7)?

Having googled, the general advice is to create a standard, non-administrator account.

I just tried that. I only had one account, my own, which is an administrator and then created a second (not the Guest account). I logged out of my own account and into the new one and tried to change the time. Windows 7 popped up a box asking if my main account would allow this (and prompting for its password).

I have been told "it shall not be possible to change system date/time". I intended to deliver a PC with only a standard account and my s/w, but can't (I think) prevent the user from creating an administrative account and changing date/time.

Can I prevent this programatially from Delphi, or do I just have to say that if the user wants to be destructive I can't prevent it?

Upvotes: 3

Views: 15863

Answers (2)

Justmade
Justmade

Reputation: 1496

In your application, you can actually detect user changing system time while your application is running.

You will receive WM_TIMECHANGE when system time change.

When startup, you can saved the gettickcount (As StartTickCount) and now (As StartTime). When checking, you can check if the different between tickcount and the different between time match (allow a small discrepancy) and know the different. However, if the user change system time away from your application, this trick do not work. Maybe you can have a service which is auto start checking for this.

If you need to change back to original time, here is some resources : CHANGE the system TIME

btw, in OS level, a normal user cannot create an admin user.

Upvotes: 4

RRUZ
RRUZ

Reputation: 136431

Generally this kind of restrictions are set using the Windows Group Policy

enter image description here

From delphi you can use the Group Policy API or the RSoP WMI Classes.

Upvotes: 11

Related Questions