On 2011-08-23 02:26:38 -0600, Tim Golden <m...@timgolden.me.uk> said:

On 22/08/2011 20:42, Bob Greschke wrote:
Several people have been hacking away on this computer we are testing
on, so I'm not sure what settings -- other than all of them -- have been
messed with, but popen("time ...") seems to work, but system("time ...")
does not. I'm going to restore the machine to its original state and see
what happens.

Hoping that this helps: you can programatically set the system time
from within Python by using the pywin32 modules, or ctypes if you
prefer. The code below works for an already-elevated command prompt
by enabling the SystemTime privilege and (crudely) moving the time
forward by five minutes by way of showing what's happening before
resetting it back.

I've commented out the actual SetSystemTime calls just in case anyone
cuts-and-pastes indjudiciously. Ideally you should disable the
privilege afterwards but I've left that out so as not to clutter
the example.

<code>
import os, sys

import win32api
import win32security
import ntsecuritycon

hToken = win32security.OpenProcessToken (
   win32api.GetCurrentProcess (),
   ntsecuritycon.MAXIMUM_ALLOWED
)
time_privilege = win32security.LookupPrivilegeValue (None, win32security.SE_SYSTEMTIME_NAME)
win32security.AdjustTokenPrivileges (
   hToken, 0,
   [(time_privilege, win32security.SE_PRIVILEGE_ENABLED)]
)

current_time = win32api.GetSystemTime ()
print "Current time:", current_time
new_time = list (current_time)
new_time[5] += 5
## print win32api.SetSystemTime (*new_time)
print "Current time:", win32api.GetSystemTime ()
## print win32api.SetSystemTime (*current_time)
print "Current time:", win32api.GetSystemTime ()

</code>

TJG

Oooo. Now I can be dangerous. We kinda also solved the whole thing for us (just a few minutes ago) by checking the checkbutton "Run as administrator" in the Properties, Compatibility tab, for python.exe and pythonw.exe. The account is an Administrator, so it's OK for this.

I thought there must be a way through pywin32, but I don't know much of anything about Windows API calls. I have a Windows Programming book collecting dust somewhere...

Thanks!

Bob

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to