Tilting at Windmills with ctypes and cygwinreg
-
Upload
simon-law -
Category
Technology
-
view
2.097 -
download
3
description
Transcript of Tilting at Windmills with ctypes and cygwinreg
![Page 2: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/2.jpg)
def introduction():
![Page 3: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/3.jpg)
![Page 4: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/4.jpg)
social reality game
![Page 5: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/5.jpg)
def problem():
![Page 6: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/6.jpg)
website
![Page 7: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/7.jpg)
![Page 8: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/8.jpg)
testing
![Page 9: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/9.jpg)
![Page 10: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/10.jpg)
![Page 11: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/11.jpg)
![Page 12: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/12.jpg)
clickwaitlook
![Page 13: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/13.jpg)
clickwaitlook
![Page 14: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/14.jpg)
clickwaitlook
![Page 15: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/15.jpg)
slow
![Page 16: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/16.jpg)
laborious
![Page 17: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/17.jpg)
boring
![Page 18: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/18.jpg)
automated testing
![Page 19: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/19.jpg)
def test_browser():
![Page 20: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/20.jpg)
© Andy HeatwoleCreative Commons Attribution-NonCommercial-NoDerivs 2.5.
http://blog.bluehourphoto.com/?showimage=224
![Page 21: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/21.jpg)
getwindmill.com
![Page 22: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/22.jpg)
![Page 23: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/23.jpg)
![Page 24: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/24.jpg)
![Page 25: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/25.jpg)
![Page 26: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/26.jpg)
one script
![Page 27: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/27.jpg)
all browsers
![Page 28: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/28.jpg)
from windmill.authoring import *
def setup_module(module): client = WindmillTestClient(__name__) client.click(id=u'home') client.waits.forPageLoad(timeout=u'60000') client.asserts.assertNode(id='LoginPage')
![Page 29: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/29.jpg)
from windmill.authoring import *
def setup_module(module): client = WindmillTestClient(__name__) client.click(id=u'home') client.waits.forPageLoad(timeout=u'60000') client.asserts.assertNode(id='LoginPage')
![Page 30: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/30.jpg)
from windmill.authoring import *
def setup_module(module): client = WindmillTestClient(__name__) client.click(id=u'home') client.waits.forPageLoad(timeout=u'60000') client.asserts.assertNode(id='LoginPage')
![Page 31: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/31.jpg)
from windmill.authoring import *
def setup_module(module): client = WindmillTestClient(__name__) client.click(id=u'home') client.waits.forPageLoad(timeout=u'60000') client.asserts.assertNode(id='LoginPage')
![Page 32: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/32.jpg)
semi-automated testing
![Page 33: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/33.jpg)
def continuous_integration():
![Page 34: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/34.jpg)
test automatically
![Page 35: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/35.jpg)
buildbot.net
![Page 36: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/36.jpg)
~/akoha$ make check
![Page 37: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/37.jpg)
C:\>make check'make' is not recognized as an internal or external command, operable program or batch file.
![Page 38: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/38.jpg)
![Page 39: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/39.jpg)
cygwin.com
![Page 40: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/40.jpg)
~/akoha$ make check
![Page 41: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/41.jpg)
Traceback (most recent call last): ...ImportError: No module named _winreg
![Page 42: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/42.jpg)
def windows_registry():
![Page 43: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/43.jpg)
proxy settings
![Page 44: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/44.jpg)
import _winreg
![Page 45: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/45.jpg)
import winreg
![Page 46: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/46.jpg)
32.3. winregWindows registry access
Platforms: Windows
![Page 47: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/47.jpg)
32.3. winregWindows registry access
Platforms: Windows
![Page 48: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/48.jpg)
3 choices
![Page 49: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/49.jpg)
1
![Page 50: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/50.jpg)
give up
![Page 51: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/51.jpg)
2
![Page 52: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/52.jpg)
recompile Python
![Page 53: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/53.jpg)
3
![Page 54: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/54.jpg)
cygwinreg
![Page 55: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/55.jpg)
like hurting myself
![Page 56: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/56.jpg)
def call_system_libraries():
![Page 57: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/57.jpg)
import ctypes
![Page 58: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/58.jpg)
foreign function interface
![Page 59: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/59.jpg)
call functions
![Page 60: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/60.jpg)
shared libraries
![Page 61: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/61.jpg)
libiberty.so
![Page 62: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/62.jpg)
libgcc.dynlib
![Page 63: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/63.jpg)
advapi32.dll
![Page 64: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/64.jpg)
>>> from ctypes import cdll
![Page 65: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/65.jpg)
>>> cdll.advapi32<CDLL 'advapi32', ... at ...>
![Page 66: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/66.jpg)
>>> cdll.advapi32.RegCloseKey<_FuncPtr object at 0x...>
![Page 67: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/67.jpg)
>>> a = cdll.advapi32>>> RegCloseKey = a.RegCloseKey>>> RegCloseKey(0)6
![Page 68: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/68.jpg)
no introspection
![Page 69: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/69.jpg)
>>> RegCloseKey(0)6>>> RegCloseKey()6
![Page 70: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/70.jpg)
return value
![Page 71: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/71.jpg)
function arguments
![Page 72: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/72.jpg)
![Page 73: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/73.jpg)
from ctypes import cdllfrom ctypes import c_long, c_ulong
# WINADVAPI LONG WINAPI RegCloseKey(HKEY);RegCloseKey = cdll.advapi32.RegCloseKeyRegCloseKey.restype = c_longRegCloseKey.argtypes = [c_ulong]
![Page 74: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/74.jpg)
from ctypes import cdllfrom ctypes import c_long, c_ulong
# WINADVAPI LONG WINAPI RegCloseKey(HKEY);RegCloseKey = cdll.advapi32.RegCloseKeyRegCloseKey.restype = c_longRegCloseKey.argtypes = [c_ulong]
![Page 75: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/75.jpg)
from ctypes import cdllfrom ctypes import c_long, c_ulong
# WINADVAPI LONG WINAPI RegCloseKey(HKEY);RegCloseKey = cdll.advapi32.RegCloseKeyRegCloseKey.restype = c_longRegCloseKey.argtypes = [c_ulong]
![Page 76: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/76.jpg)
from ctypes import cdllfrom ctypes import c_long, c_ulong
LONG = c_longHANDLE = c_ulong # in header files: void *HKEY = HANDLE
# WINADVAPI LONG WINAPI RegCloseKey(HKEY);RegCloseKey = cdll.advapi32.RegCloseKeyRegCloseKey.restype = LONGRegCloseKey.argtypes = [HKEY]
![Page 77: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/77.jpg)
>>> RegCloseKey(0)6>>> RegCloseKey()Traceback (most recent call last): ...TypeError: this function takes at least 1 argument (0 given)
![Page 78: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/78.jpg)
not Pythonic
![Page 79: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/79.jpg)
![Page 80: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/80.jpg)
PyHKEY.Close()
Closes the underlying Windows handle.
![Page 81: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/81.jpg)
class PyHKEY(object): def __init__(self, hkey): self.hkey = hkey
def Close(self): if RegCloseKey(self.hkey) != 0: raise WindowsError() self.hkey = 0
class WindowsError(OSError): ...
![Page 82: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/82.jpg)
class PyHKEY(object): def __init__(self, hkey): self.hkey = hkey
def Close(self): RegCloseKey(self.hkey) raise WindowsError() self.hkey = 0
class WindowsError(OSError): ...
![Page 83: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/83.jpg)
class PyHKEY(object): def __init__(self, hkey): self.hkey = hkey
def Close(self): if RegCloseKey(self.hkey) != 0: raise WindowsError() self.hkey = 0
class WindowsError(OSError): ...
![Page 84: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/84.jpg)
>>> from cygwinreg import PyHKEY>>> hkey = PyHKEY(0)>>> hkey.Close()
![Page 85: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/85.jpg)
![Page 86: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/86.jpg)
RegDeleteKeyW = cdll.advapi32.RegDeleteKeyWRegDeleteKeyW.restype = LONGRegDeleteKeyW.argtypes = [HKEY, LPCWSTR]
![Page 87: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/87.jpg)
![Page 88: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/88.jpg)
def DeleteKey(key, sub_key): from cygwinreg.w32api import RegDeleteKeyW wincall(RegDeleteKeyW(PyHKEY.make(key), sub_key))
![Page 89: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/89.jpg)
hours later
![Page 90: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/90.jpg)
>>> try:... import winreg... except ImportError:... import cygwinreg as winreg
![Page 91: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/91.jpg)
def tradeoffs():
![Page 92: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/92.jpg)
Python only
![Page 93: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/93.jpg)
no compilation
![Page 94: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/94.jpg)
slower
![Page 95: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/95.jpg)
no parsing
![Page 96: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/96.jpg)
simple
![Page 97: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/97.jpg)
not automatic
![Page 98: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/98.jpg)
standard
![Page 99: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/99.jpg)
portable
![Page 100: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/100.jpg)
good enough
![Page 101: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/101.jpg)
def conclusion():
![Page 102: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/102.jpg)
~/akoha$ make check
![Page 103: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/103.jpg)
continuous integration
![Page 104: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/104.jpg)
browser tests
![Page 105: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/105.jpg)
pypi.python.org/pypi/cygwinreg
![Page 106: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/106.jpg)
no compilation
![Page 107: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/107.jpg)
no installation
![Page 108: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/108.jpg)
no :'-(
![Page 109: Tilting at Windmills with ctypes and cygwinreg](https://reader034.fdocuments.us/reader034/viewer/2022042607/558b4607d8b42a4a468b45f9/html5/thumbnails/109.jpg)
cygwinregpypi.python.org/pypi/cygwinreg
PSF License
this presentation:Attribution-Share Alike 3.0