Usuario:Luis.perez/sistemaspyaytozgz/windows
De WikiEducator
Revisión a fecha de 08:18 11 ene 2013; Luis.perez (Discusión | contribuciones)
Contenido
- 1 Administración de Windows con python
- 1.1 Instalación de pywin32
- 1.2 WINSYS
- 1.2.1 Instalación
- 1.2.2 Características comunes del api
- 1.2.3 Api del registro de windows
- 1.2.3.1 obtener una key del registro
- 1.2.3.2 obtener subkey
- 1.2.3.3 iterator de keys
- 1.2.3.4 obtener padre:
- 1.2.3.5 copiar una key del registro
- 1.2.3.6 crear una key
- 1.2.3.7 eliminar una key
- 1.2.3.8 asignar valores del registro
- 1.2.3.9 obtener valores del registro
- 1.2.3.10 obtener valores del registro
- 1.2.3.11 walk dentro de una clave (similar a lo que hace os.walk para ficheros y directorios
- 1.2.3.12 Add permisos totales a un usuario
- 1.3 WMI
Administración de Windows con python
Instalación de pywin32
a) versión 214 con pip (versión antigua de hace 3 años) b) versión reciente, 218, desde http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win32-py3.3.exe/download
- Usaremos la versión más reciente, con python 3.3
WINSYS
https://github.com/tjguk/winsys
- Wrapper alrededor de pywin32 para hacerla más "pythonic"
Instalación
- Instalar pip (instalar distribute primero)
- Descargar e instalar distribute http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py
- Descargar e instalar pip https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ python get-pip.py
- Instalar PyWin32
- Instalar Winsys
$ pip install WinSys-3.x
Características comunes del api
- La mayoría de clases extienden de core._WinsysObject
- dump _WinSysObject tiene un método dump que devuelve una representación de las estructuras internas del objeto. Ej:
reg = registry.registry(r"HKLM\Software\View\Gvim") >>> reg.dump() { HKLM\Software\View\Gvim access: 983103 }
- Funciones a nivel de módulo: Normalmente, si una clase de un módulo tiene un método, suele existir uno correspondiente a nivel del módulo, a fin de facilitar el uso cuando no se desea tener que crear u obtener el objeto. Ejemplo:
reg = registry.registry(r"HKLM\Software\View\Gvim") reg.delete() # en lugar de lo anterior, podemos hacer directamente: registry.delete(r"HKLM\Software\View\Gvim")
- Métodos factoría: Existen métodos a nivel de módulo para obtener instancias de objetos. Ej:
reg = registry.registry(r"HKLM\Software\View\Gvim") # además de reg = registry.Registry(r"HKLM\Software\View\Gvim")
Api del registro de windows
obtener una key del registro
new_key = registry.registry (r"HKLM\Software\Vim\Gvim") base = registry.registry(r"HKLM\Software") gvim2 = base + "Gvim" # se puede usar el operador + para concatenar
obtener subkey
subk = base.gvim
iterator de keys
for key in base.keys(): print(key) #key es de tipo registry
obtener padre:
parent = key.parent() parent = registry.parent(key)
copiar una key del registro
new_key = registry.copy (r"HKLM\Software\Vim\Gvim", r"HKLM\Software\Vim\Gvim2")
crear una key
gvim2.create("subkey") registry.create(gvim2, "subkey")
eliminar una key
gvim2.delete("subkey") # alternativo: registry.delete(gvim2, "subkey") gvim2.delete() #alternativo: registry.delete(gvim2)
asignar valores del registro
new_key.myvalue = 5 new_key.set_value('myvalue', 2)
obtener valores del registro
print("Obteniendo valores dentro de una key") avalue = new_key.myvalue avalue = new_key.get_value('myvalue')
obtener valores del registro
for name, value in new_key.values(): print("name: {}, value: {}".format(name, value)) values_dict = dict(new_key.values())
walk dentro de una clave (similar a lo que hace os.walk para ficheros y directorios
for key, subkeys, values in base.walk(): #key es de tipo registry #subkeys es una iterator de tipo registry #values es un iterator de tuplas nombre-valor pass
Add permisos totales a un usuario
try: with new_key.security () as sec: sec.break_inheritance (copy_first=False) sec.dacl.append(accounts.user("luis", "F", "ALLOW")) finally: new_key.security().dump ()