Credit: Daniel Kinnaer
You need to check which tasks Windows is set to automatically run at logon and possibly change these tasks.
When administering Windows machines, it’s crucial to
keep track of the tasks each machine runs at logon. Like so many
Windows tasks, this requires working with the registry, and standard
Python module _winreg
enables this:
from _winreg import * aReg = ConnectRegistry(None, HKEY_LOCAL_MACHINE) try: targ = r'SOFTWAREMicrosoftWindowsCurrentVersionRun' print "*** Reading from", targ, "***" aKey = OpenKey(aReg, targ) try: for i in range(1024): try: n, v, t = EnumValue(aKey, i) print i, n, v, t except EnvironmentError: print "You have", i, "tasks starting at logon" break finally: CloseKey(aKey) print "*** Writing to", targ, "***" aKey = OpenKey(aReg, targ, 0, KEY_WRITE) try: try: SetValueEx(aKey, "MyNewKey", 0, REG_SZ, r"c:winntexplorer.exe") except EnvironmentError: print "Encountered problems writing into the Registry..." raise finally: CloseKey(aKey) finally: CloseKey(aReg)
The
Windows
registry holds a wealth of crucial system-administration data, and
the Python standard module _winreg
makes it
feasible to read and alter data held in the registry. One of the
items held in the Windows registry is a list of tasks to be run at
logon. This recipe shows how to examine this list and how to add a
task to the list so it is run at logon.
If you want to remove the specific key added by this recipe, you can use the following simple script:
from _winreg import * aReg = ConnectRegistry(None, HKEY_LOCAL_MACHINE) targ = r'SOFTWAREMicrosoftWindowsCurrentVersionRun' aKey = OpenKey(aReg, targ, 0, KEY_WRITE) DeleteValue(aKey, "MyNewKey") CloseKey(aKey) CloseKey(aReg)
The
try
/finally
constructs
used in the recipe are far more robust than this simple sequence of
function calls, since they ensure everything is closed correctly
regardless of whether the intervening calls succeed or fail. This is
strongly advisable for scripts that will be run in production,
particularly for system-administration scripts that will generally
run with administrator privileges and therefore might potentially
harm a system’s setup if they don’t
clean up after themselves properly. However, you can omit the
try
/finally
when you know the
calls will succeed or don’t care what happens if
they fail. In this case, if you have successfully added a task with
the recipe’s script, the calls in this simple
cleanup script should work.
Documentation for the standard module _winreg
in
the Library Reference; Windows API documentation
available from Microsoft (http://msdn.microsoft.com); information on
what is where in the registry tends to be spread among many sources,
but for some collections of such information, see http://www.winguides.com/registry and
http://www.activewin.com/tips/reg/index.shtml.