18 7月 2013

[Jython] Use JNA Read/Write Windows Registry

最近用Sikuli開發,Run Script時需要讀寫Windows的Registry,由於Sikuli script是用Jython的,而Jython裡並不像Python支援Read/Write Windows Registry,所以必須用一些其他的Library才行

而其中一個方法就是用JNA
下載最新的JNA與JNA-Platform
放到要執行的Script旁,或是放到Jython的目錄裡

以下的範例,將jna-3.5.1.jar與jna-platform-3.5.1.jar放到Sample.py旁,以Jython執行
Sample.py
import os
import sys
folder = os.path.dirname(os.path.abspath(__file__))

# load JavaLib jna/platform
sys.path.append(os.path.join(folder, 'jna-3.5.1.jar'))
sys.path.append(os.path.join(folder, 'jna-platform-3.5.1.jar'))

# Read
from com.sun.jna.platform.win32 import Advapi32Util, WinReg
path = Advapi32Util.registryGetStringValue( \
    WinReg.HKEY_LOCAL_MACHINE, 
    r'Software\CyberLink\ColorDirector2', 
    'InstallPath' )

print path.encode(sys.getfilesystemencoding())


Reference

沒有留言: