I currently look after around 40 end users and I have been approached by a good percentage of these all saying there desktops are randomly restarting in the morning / afternoon every day.

My first thought was that there was a GPO that was set incorrectly, this was not the case. My second thought was to turn of the "auto shutdown after error" feature by adding this to our teacher login batch file

wmic recoveros set AutoReboot = False

After logging in with a test teacher account using this batch file the desktop I was on did restart after around 5 minuets of browsing the web.

I checked task scheduler to see if there was any old shut down GPO's laying around and there was not and event viewer only comes up with the kernel power error telling me that the desktop restarted randomly.

The machines are already in different OU's, I will give that a try now but I do not think its down to group policy as I have already checked all the policy's and none are set to restart the desktops at all, only shut down at the end of the day.

Overheating can cause random reboots, check environmental conditions and air vents are unrestricted. Have you checked the Event log of one of the affected machines to see if you can figure out what happened when it rebooted?

If the reboot was caused by a GPO or Scheduled Task, you should see an
Event ID 1074, this should give you the name of the user/service account and the name of the EXE that initiated the shutdown. Or if it is caused by hardware issue/BSOD then you should see an Event ID 41 'Unexpected Shutdown'.

Set obj1 = objWMIService.ExecQuery("select * from __eventfilter where name='BVTFilter' and query='SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA ""Win32_Processor"" AND TargetInstance.LoadPercentage > 99'")

For Each obj1elem in obj1

set obj2set = obj1elem.Associators_("__FilterToConsumerBinding")

set obj3set = obj1elem.References_("__FilterToConsumerBinding")

For each obj2 in obj2set

WScript.echo "Deleting the object"

WScript.echo obj2.GetObjectText_

obj2.Delete_

next

For each obj3 in obj3set

WScript.echo "Deleting the object"

WScript.echo obj3.GetObjectText_

obj3.Delete_

next

WScript.echo "Deleting the object"

WScript.echo obj1elem.GetObjectText_

obj1elem.Delete_

Next

This worked and the computers no longer randomly restart, which is great. (Hope this helps)

I've seen this error or something extremely similar in windows 7 before. We had it pop on a few workstations. While it did not cause a reboot, it did cause the PC to freeze/lock for a moment randomly throughout the day. Glad you were able to figure it out.