Diferencia entre revisiones de «Usuario:Luis.perez/sistemaspyaytozgz/windows»

De WikiEducator
Saltar a: navegación, buscar
(WINSYS)
(Características comunes del api)
Línea 34: Línea 34:
 
</source>
 
</source>
  
==== Características comunes del api ====
+
==== 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:
 +
 +
<source lang="python">
 +
reg = registry.registry(r"HKLM\Software\View\Gvim")
 +
>>> reg.dump()
 +
{
 +
  HKLM\Software\View\Gvim
 +
  access: 983103
 +
}
 +
</source>
 +
 +
* 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:
 +
 +
<source lang="python">
 +
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")
 +
</source>
 +
 +
* Métodos factoría: Existen métodos a nivel de módulo para obtener instancias de objetos. Ej:
 +
 +
<source lang="python">
 +
reg = registry.registry(r"HKLM\Software\View\Gvim")
 +
# además de
 +
reg = registry.Registry(r"HKLM\Software\View\Gvim")
 +
</source>
  
 
==== Api del registro de windows ====
 
==== Api del registro de windows ====

Revisión de 07:17 11 ene 2013

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

 
   $ python distribute_setup.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 ()