Diferencia entre revisiones de «Usuario:Luis.perez/sistemaspyaytozgz/windows»
De WikiEducator
(→WINSYS) |
(→Instalación de pywin32) |
||
Línea 1: | Línea 1: | ||
== Administración de Windows con python == | == Administración de Windows con python == | ||
+ | |||
+ | === Python for Windows extensions: PyWin32 === | ||
+ | |||
+ | Es un wrapper alrededor del api win32 implementado con SWIG. | ||
==== Instalación de pywin32 ==== | ==== Instalación de pywin32 ==== | ||
Línea 7: | Línea 11: | ||
* Usaremos la versión más reciente, con python 3.3 | * Usaremos la versión más reciente, con python 3.3 | ||
− | |||
=== WINSYS === | === WINSYS === |
Revisión de 09:13 11 ene 2013
Contenido
- 1 Administración de Windows con python
- 1.1 Python for Windows extensions: 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.2.4 Api del entorno de windows
- 1.3 WMI
Administración de Windows con python
Python for Windows extensions: PyWin32
Es un wrapper alrededor del api win32 implementado con SWIG.
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 ()
Api del entorno de windows
from winsys import environment
Entorno del usuario
>>>> environment.user() {'TMP': 'C:\\Documents and Settings\\luis\\Temp', 'TEMP':'C:\\Documents and Settings\\luis\\Temp'}
Entorno del sistema
>>>> environment.system() 'NUMBER_OF_PROCESSORS': '1', 'PROCESSOR_IDENTIFIER': 'x86 Family 6 Model 42 Stepping 7, GenuineIntel', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH', 'windir': 'C:\\WINDOWS', 'PROCESSOR_LEVEL': '6', 'FP_NO_HOST_CHECK': 'NO', 'ComSpec': 'C:\\WINDOWS\\system32\\cmd.exe', 'Path': 'C:\\Python33\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\Python33\\Scripts;C:\\C ...