from django import template import _winreg, os.path register = template.Library() # Define the full path to the registry location # id = PATH\stringvalue # # Only expose a few settings...The alternative is to pass this as a parameter from the template. str_paths = dict( computername = r'SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\ComputerName', spamcount = r'SOFTWARE\Spam\CurrentNumberOfEggs', eggcount = r'SOFTWARE\Spam\CurrentNumberOfSpam' ) @register.filter def registry( server, reg ): ''' Example usages: {% server|registry:"computername" %} to query server's registry setting for str_paths['computername']. {% server|registry:"spamcount" %} to query server's registry setting for str_paths['spamcount']. {% server|registry:"eggcount" %} to query server's registry setting for str_paths['eggcount']. ''' conn, regkey, val = None, None, ('','') try: regpath, var = os.path.split( str_paths[reg] ) conn = _winreg.ConnectRegistry(r'\\%s' % server, _winreg.HKEY_LOCAL_MACHINE) regkey = _winreg.OpenKey( conn, regpath ) val = _winreg.QueryValueEx(regkey, var) except Exception, e: pass if conn: _winreg.CloseKey( conn ) if regkey: _winreg.CloseKey( regkey ) return val[0]