Python Cookbook 2Nd Edition Jun 1002005 [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Python Cookbook 2Nd Edition Jun 1002005 [Electronic resources] - نسخه متنی

David Ascher, Alex Martelli, Anna Ravenscroft

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید







Recipe 10.13. Checking and Modifying the Set of Tasks Windows Automatically Runs at Login


Credit: Daniel Kinnaer


Problem



You need to check which tasks Windows is
set to automatically run at login and possibly change this set of
tasks.


Solution


When administering Windows machines, it's crucial to
keep track of the tasks each machine runs at login. Like so many
Windows tasks, this requires working with the registry, and standard
Python module _winreg enables this:

import _winreg as wr
aReg = wr.ConnectRegistry(None, wr.HKEY_LOCAL_MACHINE)
try:
targ = r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
print "*** Reading from", targ, "***"
aKey = wr.OpenKey(aReg, targ)
try:
for i in xrange(1024):
try:
n, v, t = wr.EnumValue(aKey, i)
print i, n, v, t
except EnvironmentError:
print "You have", i, "tasks starting at logon"
break
finally:
wr.CloseKey(aKey)
print "*** Writing to", targ, "***"
aKey = wr.OpenKey(aReg, targ, 0, wr.KEY_WRITE)
try:
try:
wr.SetValueEx(aKey, "MyNewKey", 0, REG_SZ, r"c:\winnt\explorer.exe")
except EnvironmentError:
print "Encountered problems writing into the Registry..."
raise
finally:
CloseKey(aKey)
finally:
CloseKey(aReg)


Discussion


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 login (in addition to other lists
held elsewhere, such as the user-specific
Startup folder that this recipe does not deal
with).

This recipe shows how to examine the registry list of login tasks,
and how to add a task to the list so it is run at login. (This recipe
assumes you have Explorer installed at the specific location
c:\winnt. If you have it installed elsewhere,
edit the recipe accordingly.)

If you want to remove the specific key added by this recipe, you can
use the following simple script:

import _winreg as wr
aReg = wr.ConnectRegistry(None, wr.HKEY_LOCAL_MACHINE)
targ = r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
aKey = wr.OpenKey(aReg, targ, 0, wr.KEY_WRITE)
wr.DeleteValue(aKey, "MyNewKey")
wr.CloseKey(aKey)
wr.CloseKey(aReg)

The TRy/finally constructs used
in the recipe are far more robust than the simple sequence of
function calls used in this latest snippet, since they ensure that
everything is closed correctly regardless of whether the intervening
calls succeed or fail. This care and prudence are strongly advisable
for scripts that are meant be run in production, particularly for
system-administration scripts that must generally run with
administrator privileges. Such scripts therefore might 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 just fine.


See Also


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 information among
many sources, but for some useful collections of such information,
see http://www.winguides.com/registry and
http://www.activewin.com/tips/reg/index.shtml.


/ 394