home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Narzedzia / TeamSpeak / TeamSpeak3-Client-win32-3.0.0.exe / plugins / clientquery_plugin / examples / ts3paths.py < prev   
Text File  |  2011-06-22  |  3KB  |  96 lines

  1. #
  2. # TeamSpeak 3 ClientQuery example
  3. # Copyright (c) 2010 TeamSpeak Systems GmbH
  4. #
  5. # Common functions to get TeamSpeak 3 paths from the Windows registry
  6. #
  7.  
  8. import _winreg, os
  9.  
  10. #
  11. # Attempt to open TeamSpeak 3 Client registry key in "Software\TeamSpeak 3 Client" for 32 or 64 bit client
  12. # versions in local or global installation mode
  13. #
  14. def openTS3ClientKey(isLocal, is64Bit):
  15.     if isLocal:
  16.         key = _winreg.HKEY_CURRENT_USER
  17.     else:
  18.         key = _winreg.HKEY_LOCAL_MACHINE
  19.     if is64Bit:
  20.         sam = _winreg.KEY_WOW64_64KEY
  21.     else:
  22.         sam = _winreg.KEY_WOW64_32KEY
  23.     try:
  24.         hKey = _winreg.OpenKey(key, r'Software\TeamSpeak 3 Client', 0, _winreg.KEY_READ | sam)
  25.         return hKey
  26.     except WindowsError:
  27.         return None
  28.  
  29. #
  30. # Try to open the "Software\TeamSpeak 3 Client" registry key
  31. # Depending if the installation is a 32 or 64 bit client and if it was installed locally or into C:\Program Files, there
  32. # we have to try multiple combination to find the right registry location
  33. #
  34. def getTS3ClientHKey():
  35.     hKey = openTS3ClientKey(False, False)  # 32-bit in HKEY_LOCAL_MACHINE
  36.     if not hKey:
  37.         hKey = openTS3ClientKey(True, False)  # 32-bit in HKEY_CURRENT_USER
  38.         if not hKey:
  39.             hKey = openTS3ClientKey(False, True)  # 64-bit in HKEY_LOCAL_MACHINE
  40.             if not hKey:
  41.                 hKey = openTS3ClientKey(True, True)  # 64-bit in HKEY_CURRENT_USER
  42.     return hKey
  43.  
  44. #
  45. # Open TeamSpeak 3 Client registry key and return the value of the given subkey
  46. #
  47. def getTS3ClientRegistryKey(subkey):
  48.     hKey = getTS3ClientHKey()
  49.     if not hKey:
  50.         return None  # Failed
  51.     try:
  52.         value, type = _winreg.QueryValueEx(hKey, subkey)
  53.     except WindowsError, err:
  54.         print 'Failed to find TeamSpeak 3 Client registry key:', err
  55.         _winreg.CloseKey(hKey)
  56.         return None
  57.     _winreg.CloseKey(hKey)
  58.     return value
  59.     
  60. #
  61. # Get TeamSpeak 3 client installation folder from Windows registry
  62. #
  63. def getTS3ClientInstallPath():
  64.     return getTS3ClientRegistryKey('')  # Default key
  65.  
  66. #
  67. # Get TeamSpeak 3 client binary path
  68. # First get the installation folder from registry, then check for both 32 and 64 bit binary.
  69. # Return full path of the TS3 client binary or None if client was not found.
  70. #
  71. def getTS3ClientBinaryPath():
  72.     installPath = getTS3ClientInstallPath()
  73.     if not installPath:
  74.         return None
  75.     binaryPath = installPath + r'\ts3client_win32.exe'
  76.     if os.path.exists(binaryPath) and os.path.isfile(binaryPath):
  77.         return binaryPath
  78.     binaryPath = getTS3ClientInstallPath() + '\\ts3client_win64.exe'
  79.     if os.path.exists(binaryPath) and os.path.isfile(binaryPath):
  80.         return binaryPath
  81.     return None
  82.  
  83. #
  84. # Get TeamSpeak 3 client config folder from Windows registry
  85. # Returns full path to the config folder or None if config folder was not found.
  86. #
  87. def getTS3ClientConfigPath():
  88.     configLocation = getTS3ClientRegistryKey('ConfigLocation')  # 0 = home, 1 = local
  89.     if configLocation == '0':
  90.         configPath = os.path.expandvars('%APPDATA%\TS3Client')
  91.     else:
  92.         configPath = getTS3ClientInstallPath() + "\config"  # Config folder is located inside install path
  93.     if os.path.exists(configPath):
  94.         return configPath
  95.     return None
  96.