def get_theme(): if registry.get( 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\' + 'CurrentVersion\\ThemeManager', 'ThemeActive'): return registry.get( 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\' + 'CurrentVersion\\ThemeManager', 'DllName')
def get_win_env(key=None): # Get the system environment env_system = registry.get(( 'HKEY_LOCAL_MACHINE\\System\\' + 'CurrentControlSet\\Control\\Session Manager\\Environment')) # Get the user environment env_user = registry.get(( 'HKEY_CURRENT_USER\\' + 'Environment')) # Start with the system keys env = env_system # Let the user-set ones override them env.update(env_user) if key is None: return env else: if key in env: return env[key] else: env_lowercase = dict(( (key.lower(), value) for key, value in env.iteritems() )) if key in env_lowercase: return env_lowercase[key] elif key.lower() in env_lowercase: return env_lowercase[key.lower()] return None
def set(boolean, size=None, program=None): """ Set whether Wine should emulate a virtual desktop @param boolean whether the virtual desktop should be used @type boolean @param size the size of the the virtual desktop in pixels @type tuple (width,height) - defaults to 800x600 (like winecfg) @param program if set, the virtual desktop should only be set for this program @type string "explorer.exe" """ if program is not None: program = program.lower() if common.ENV['VINEYARDCONFNAME'] == '': conf_name = 'Default' else: conf_name = common.ENV['VINEYARDCONFNAME'] print("Size:", size) if size is None: if program: size = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops', program, quiet=True) else: size = registry.get( 'HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops', conf_name, quiet=True) if not size: size = registry.get( 'HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops', 'Desktops', quiet=True) if not size: size = (800, 600) else: size = tuple([ int(i) for i in size.split('x') ]) else: size = tuple(size) print("Set desktop {0} as {1}".format(conf_name, size)) if boolean: if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops': { program: '%sx%s' % size}}) registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Explorer' % program : { "Desktop": program}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops': { conf_name: '%sx%s' % size}}) registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Explorer': { "Desktop": conf_name}}) else: if program: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Explorer' % program : { "Desktop": None}}) else: registry.set({'HKEY_CURRENT_USER\\Software\\Wine\\Explorer': { "Desktop": None}})
def get_theme(): if registry.get( 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\'+ 'CurrentVersion\\ThemeManager', 'ThemeActive' ): return registry.get( 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\'+ 'CurrentVersion\\ThemeManager', 'DllName' )
def get_pixel_shader(program=None): if 'graphics-pixel-shader' in CACHE: return CACHE['graphics-pixel-shader'] if program: settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Direct3D' % program, quiet=True) else: settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D', quiet=True) if "PixelShaderMode" in settings: return False else: return True
def get_eax_support(program=None): if common.ENV.get('WINE_SUPPORTS_EAX') == 'true': if program: bits = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \ program, "EAXEnabled", quiet=True) else: enabled = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound', "EAXEnabled", quiet=True) if enabled: return common.value_as_bool(enabled) or False else: return False else: return None
def get_overrides(): libs = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides', quiet=True) overridden = [] for lib, setting in libs.iteritems(): if not setting.startswith("builtin"): overridden.append( (lib, setting) ) return sorted(overridden)
def get_csmt(): if common.ENV.get('WINE_SUPPORTS_CSMT') == 'true': if common.ENV.get('WINE_SUPPORTS_CSMT_TYPE') == 'dll': dll_overrides = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DllRedirects') try: return dll_overrides['wined3d'] == 'wined3d-csmt.dll' except (KeyError, SyntaxError): return False else: direct3d_settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D') try: return direct3d_settings['CSMT'] == 'enabled' except (KeyError, SyntaxError): return False else: return None
def get_allow_xrandr(): settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver') try: return settings['UseXRandR'].lower() == 'y' except (KeyError, SyntaxError): # Default is True return True
def get_eax_support(program=None): if common.ENV.get('WINE_SUPPORTS_EAX') == 'true': if program: bits = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \ program, "EAXEnabled", quiet=True) else: enabled = registry.get( 'HKEY_CURRENT_USER\\Software\\Wine\\DirectSound', "EAXEnabled", quiet=True) if enabled: return common.value_as_bool(enabled) or False else: return False else: return None
def get_acceleration(program=None): #try: # return CACHE['audio-acceleration'] #except KeyError: if program: level = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \ program, "HardwareAcceleration", quiet=True) else: level = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound', "HardwareAcceleration", quiet=True) if level: #CACHE['audio-acceleration'] = level return level else: #CACHE['audio-acceleration'] = ACCELERATION_NAMES['default'] return ACCELERATION_NAMES['default']
def set(foldername, target): """Set the shellfolder "foldername" (one of the keys in FOLDER_REG_NAMES) to the directory "target".""" if foldername.lower() in FOLDER_REG_NAMES.keys(): # Camelcase the folder #foldername = " ".join([ i.capitalize() for i in foldername.split(" ") ]) #userpath = registry.get('HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\Environment', 'APPDATA') #folderpath = "%s/drive_c/%s/%s" % (common.ENV['WINEPREFIX'], "/".join(userpath[3:].split("\\")[:-1]), foldername) folder_path = registry.get('HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders', FOLDER_REG_NAMES[foldername.lower()]) # If the registy folder path is a symlink from inside the configuration, change the symlink if isinstance(folder_path, basestring) and ('\\windows\\' or '\\users\\' in folder_path): folder_path = util.wintounix(folder_path) try: os.remove(folder_path) except OSError: try: os.rmdir(folder_path) except OSError: print("Skipping %s, there are files in the directory" % os.path.basename(folder_path), file=sys.stderr) os.symlink(target, folder_path) # If not, it refers to a real directory, don't mess with it, set the registry info instead else: folder_path = target registry.set({'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders': {FOLDER_REG_NAMES[foldername.lower()]: folder_path}}) try: folders = CACHE['shellfolders'] except KeyError: folders = {} folders[foldername] = folder_path CACHE['shellfolders'] = folders
def get_pixel_shader(program=None): if 'graphics-pixel-shader' in CACHE: return CACHE['graphics-pixel-shader'] if program: settings = registry.get( 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Direct3D' % program, quiet=True) else: settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D', quiet=True) if "PixelShaderMode" in settings: return False else: return True
def get_overrides(): libs = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DllOverrides', quiet=True) overridden = [] for lib, setting in libs.iteritems(): if not setting.startswith("builtin"): overridden.append((lib, setting)) return sorted(overridden)
def get_dxva2_vaapi(): if common.ENV.get('WINE_SUPPORTS_DXVA2_VAAPI') == 'true': settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DXVA2') try: return settings['backend'].lower() == 'va' except (KeyError, SyntaxError): return False else: return None
def get_check_float_constants(): if common.ENV.get('WINE_SUPPORTS_CHECK_FLOAT_CONSTANTS') == 'true': settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D\\CheckFloatConstants') try: return settings['backend'].lower() == 'enabled' except (KeyError, SyntaxError): return False else: return None
def get_csmt(): if common.ENV.get('WINE_SUPPORTS_CSMT') == 'true': if common.ENV.get('WINE_SUPPORTS_CSMT_TYPE') == 'dll': dll_overrides = registry.get( 'HKEY_CURRENT_USER\\Software\\Wine\\DllRedirects') try: return dll_overrides['wined3d'] == 'wined3d-csmt.dll' except (KeyError, SyntaxError): return False else: direct3d_settings = registry.get( 'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D') try: return direct3d_settings['CSMT'] == 'enabled' except (KeyError, SyntaxError): return False else: return None
def get_bit_depth(program=None): if program: bits = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % \ program, "DefaultBitsPerSample", quiet=True) else: #try: # return CACHE['audio-bitdepth'] #except KeyError: bits = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound', "DefaultBitsPerSample", quiet=True) if bits: #if program == None: # CACHE['audio-bitdepth'] = bits return bits else: #if program == None: # CACHE['audio-bitdepth'] = '16' return '16'
def get_driver_emulation(program=None): if program: state = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program, "EmulDriver", quiet=True) else: #try: # return CACHE['audio-emulate-driver'] #except KeyError: state = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound', "EmulDriver", quiet=True) if state and "y" in state.lower(): #if program == None: # CACHE['audio-emulate-driver'] = True return True else: #if program == None: # CACHE['audio-emulate-driver'] = False return False
def get_sample_rate(program=None): if program: rate = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program, "DefaultSampleRate", quiet=True) else: #try: # return CACHE['audio-samplerate'] #except KeyError: rate = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound', "DefaultSampleRate", quiet=True) if rate: #if program == None: # CACHE['audio-samplerate'] = rate return rate else: if program == None: CACHE['audio-samplerate'] = '44100' return '44100'
def get_show_dot_files(): if 'show-dot-files' in CACHE: return CACHE['show-dot-files'] value = registry.get( 'HKEY_CURRENT_USER\\Software\\Wine', 'ShowDotFiles' ) in ('y', 'Y') CACHE['show-dot-files'] = value return value
def get_screen_dpi(): if 'graphics-screen-dpi' in CACHE: return CACHE['graphics-screen-dpi'] settings = registry.get('HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts', quiet=True) if "LowPixels" in settings: return int(settings["LowPixels"], 16) else: return 96
def set_type(driveletter, drive_type): # Make sure we use the same caps for the driveletter as the reg typesraw = registry.get("HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives", quiet=True, shallow=True) for key, value in typesraw.iteritems(): if key.lower == driveletter.lower(): driverletter = key # Save it if drive_type not in DRIVE_TYPES or drive_type != None: util.warning("Setting drive type to unknown value: %s" % drive_type) registry.set({"HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives": {"%s:" % driveletter: drive_type}})
def get_check_float_constants(): if common.ENV.get('WINE_SUPPORTS_CHECK_FLOAT_CONSTANTS') == 'true': settings = registry.get( 'HKEY_CURRENT_USER\\Software\\Wine\\Direct3D\\CheckFloatConstants') try: return settings['backend'].lower() == 'enabled' except (KeyError, SyntaxError): return False else: return None
def set_type(driveletter, drive_type): # Make sure we use the same caps for the driveletter as the reg typesraw = registry.get('HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives', quiet=True, shallow=True) for key,value in typesraw.iteritems(): if key.lower == driveletter.lower(): driverletter = key # Save it if drive_type not in DRIVE_TYPES or drive_type != None: util.warning("Setting drive type to unknown value: %s" % drive_type) registry.set({'HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives': {"%s:" % driveletter: drive_type}})
def _parseWineVersionFromRegistry(): # Note, good info here as well, though it's a bit too precise for what we # need for Wine... but you never know ;) # http://techsupt.winbatch.com/TS/T000001074F4.html versionnt = registry.get(KeyNT, "CurrentVersion") best = DEFAULT # hardcoded fallback (same as in winecfg) if versionnt: version = versionnt platform = "WIN32_NT" build = int(registry.get(KeyNT, "CurrentBuildNumber")) else: version9x = registry.get(Key9x, "VersionNumber") if version9x: version = version9x platform = "WIN32_WINDOWS" else: return best # Strip non-legal characters, if needed try: int(version) except ValueError: chars = '0123456789.' version = ''.join(( i for i in version if i in chars )) if '.' in version: parts = version.split('.') if len(parts) == 3: build = int(parts[2]) minor = int(parts[1]) major = int(parts[0]) else: major = int(version) for winver,data in windowsversions.iteritems(): if data[wPlatformId] != platform or data[wMajorVersion] != major: continue best = winver if data[wMinorVersion] == minor and data[wBuildNumber] == build: return winver return best
def get_mouse_grab(): if 'windows-mouse-grab' in CACHE: return CACHE['windows-mouse-grab'] settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver', quiet=True) if "DXGrab" in settings and "n" in settings["DXGrab"].lower(): value = False else: value = True CACHE['windows-mouse-grab'] = value return value
def get_managed(): if 'windows-managed' in CACHE: return CACHE['windows-managed'] settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\X11 Driver', quiet=True) if "Managed" in settings and "n" in settings["Managed"].lower(): value = False else: value = True CACHE['windows-managed'] = value return value
def get_screen_dpi(): if 'graphics-screen-dpi' in CACHE: return CACHE['graphics-screen-dpi'] settings = registry.get( 'HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts', quiet=True) if "LowPixels" in settings: return int(settings["LowPixels"], 16) else: return 96
def get_antialiasing_disabled(): if 'graphics-antialiasing-disabled' in CACHE: return CACHE['graphics-antialiasing-disabled'] settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\X11 Driver') if ("ClientSideAntiAliasWithRender" in settings and "ClientSideAntiAliasWithCore" in settings and settings['ClientSideAntiAliasWithRender'].lower() == 'n' and settings['ClientSideAntiAliasWithCore'].lower() == 'n'): return True else: return False
def get_enabled_drivers(): #try: # return CACHE['audio-enabled-drivers'] #except KeyError: drivers = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Drivers', "Audio", quiet=True) if drivers not in [ None, {} ]: drivers = drivers.split(',') #CACHE['audio-enabled-drivers'] = drivers return drivers else: #CACHE['audio-enabled-drivers'] = [] return []
def get_video_memory_size(): if 'graphics-video-memory-size' in CACHE: return CACHE['graphics-video-memory-size'] settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D') if 'VideoMemorySize' in settings: try: return int(settings['VideoMemorySize']) except ValueError: return None else: return None
def get_mouse_warp(): if 'xinput-mouse-warp' in CACHE: return CACHE['xinput-mouse-warp'] settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectInput', quiet=True) value = 'enable' # Default value if 'MouseWarpOverride' in settings: if type(settings['MouseWarpOverride']) in (str, unicode): if settings['MouseWarpOverride'].lower() in ('enable', 'disable', 'force'): value = settings['MouseWarpOverride'].lower() CACHE['xinput-mouse-warp'] = value return value
def get(program=None): if program: program = program.lower() # Does this program use a virtual desktop? desktop = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\Explorer' % program.lower(), "Desktop", quiet=True) if desktop: desktop = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops', desktop, quiet=True) if desktop: return tuple([ int(i) for i in desktop.lower().split('x') ]) else: return None else: # Does the default configuration use a virtual desktop? desktop = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Explorer', "Desktop", quiet=True) if desktop: desktop = util.string_remove_escapes(desktop) desktop = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Explorer\\Desktops', desktop, quiet=True) if desktop: return tuple([ int(i) for i in desktop.lower().split('x') ]) else: return None
def get(program=None): if program: version = None programs = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults', quiet=True) for key in programs.keys(): programs[key.lower()] = programs[key] if program.lower() in programs.keys() and 'Version' in programs[program.lower()]: version = programs[program.lower()]['Version'] if version == None or version not in windowsversions.keys(): return DEFAULT else: return version else: version = registry.get('HKEY_CURRENT_USER\\Software\\Wine', "Version", quiet=True) if version: if version == None or version not in windowsversions.keys(): return DEFAULT else: return version else: return _parseWineVersionFromRegistry()
def get_driver_emulation(program=None): if program: state = registry.get( 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program, "EmulDriver", quiet=True) else: #try: # return CACHE['audio-emulate-driver'] #except KeyError: state = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound', "EmulDriver", quiet=True) if state and "y" in state.lower(): #if program == None: # CACHE['audio-emulate-driver'] = True return True else: #if program == None: # CACHE['audio-emulate-driver'] = False return False
def get_sample_rate(program=None): if program: rate = registry.get( 'HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\%s\\DirectSound' % program, "DefaultSampleRate", quiet=True) else: #try: # return CACHE['audio-samplerate'] #except KeyError: rate = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\DirectSound', "DefaultSampleRate", quiet=True) if rate: #if program == None: # CACHE['audio-samplerate'] = rate return rate else: if program == None: CACHE['audio-samplerate'] = '44100' return '44100'
def get_offscreen_rendering_mode(): if 'graphics-offscreen-rendering-mode' in CACHE: return CACHE['graphics-offscreen-rendering-mode'] settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D') if 'OffscreenRenderingMode' in settings: return settings['OffscreenRenderingMode'] else: if (common.VERSION_MAJOR >= 1 and common.VERSION_MINOR >= 1 and common.VERSION_MICRO >= 23): return 'fbo' else: return 'backbuffer'
def get_user_style(style): if style not in USER_PREFERENCES_MASK: raise ValueError, ("Argument style should be one of " + common.list_to_english_or( ('"{0}"'.format(i) for i in USER_PREFERENCES_MASK.keys()))) mask = registry.get('HKEY_CURRENT_USER\\Control Panel\\Desktop', 'UserPreferenceMask') if mask: mask = common.bitfield(mask) return bool(mask[USER_PREFERENCES_MASK[style]['bit']]) else: return bool(USER_PREFERENCES_MASK[style]['default'])
def get_antialiasing_disabled(): if 'graphics-antialiasing-disabled' in CACHE: return CACHE['graphics-antialiasing-disabled'] settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\X11 Driver') if ( "ClientSideAntiAliasWithRender" in settings and "ClientSideAntiAliasWithCore" in settings and settings['ClientSideAntiAliasWithRender'].lower() == 'n' and settings['ClientSideAntiAliasWithCore'].lower() == 'n' ): return True else: return False
def get_enabled_drivers(): #try: # return CACHE['audio-enabled-drivers'] #except KeyError: drivers = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Drivers', "Audio", quiet=True) if drivers not in [None, {}]: drivers = drivers.split(',') #CACHE['audio-enabled-drivers'] = drivers return drivers else: #CACHE['audio-enabled-drivers'] = [] return []
def get_offscreen_rendering_mode(): if 'graphics-offscreen-rendering-mode' in CACHE: return CACHE['graphics-offscreen-rendering-mode'] settings = registry.get('HKEY_CURRENT_USER\\Software\\Wine\\Direct3D') if 'OffscreenRenderingMode' in settings: return settings['OffscreenRenderingMode'] else: if ( common.VERSION_MAJOR >= 1 and common.VERSION_MINOR >= 1 and common.VERSION_MICRO >= 23 ): return 'fbo' else: return 'backbuffer'
def get_devices(): output = {'out':{}, 'in':{}} devices = registry.get('HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio' ,quiet=True) # Testing data: #devices = {'Capture': {'{F339B1DC-2C23-4841-A3D0-BD7E2B2C221F}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Digital', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Digital', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{77B76B38-AB09-4BA3-AC05-DB3DB1423465}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Analog', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Analog', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{FC420A03-7C59-49E4-A042-EDC9117F4014}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'default', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'default', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}}, 'Render': {'{50E55B21-BE90-4F49-897F-91251492D44B}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'USB Sound Device - USB Audio', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'USB Sound Device - USB Audio', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{5137B298-5B1B-4948-B14A-2696B8C02110}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Digital', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Digital', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{9F815751-4036-412E-AAEB-7D6AC3932230}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Analog', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Analog', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{8792A66E-6D13-4F9E-A608-1E5D12494D49}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'default', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'default', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}}} for device_type,type_name in [('Render','out'), ('Capture','in')]: for device_id in devices[device_type].iterkeys(): # This is a bit of a hack. I have no idea how this data is structured, # I just use the first value that is a string instead of a hex value device_properties = devices[device_type][device_id]['Properties'] name = [ i for i in device_properties.itervalues() if type(i) == unicode ][0] output[type_name][name] = device_properties output[type_name][name]['id'] = device_id return output
def get_user_style(style): if style not in USER_PREFERENCES_MASK: raise ValueError, ( "Argument style should be one of "+ common.list_to_english_or(( '"{0}"'.format(i) for i in USER_PREFERENCES_MASK.keys() )) ) mask = registry.get( 'HKEY_CURRENT_USER\\Control Panel\\Desktop', 'UserPreferenceMask' ) if mask: mask = common.bitfield(mask) return bool(mask[ USER_PREFERENCES_MASK[style]['bit'] ]) else: return bool(USER_PREFERENCES_MASK[style]['default'])
def get(use_registry=True, basic=False): """ Get a dictionary of the available drives for this configuration. Note that this might include less drives than winecfg will show since this functions will only include drives that are actually visible to programs, unlike winecfg.""" drives = {} types = {} if use_registry: types_raw = registry.get('HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives', shallow=True) util.dict_to_case_insensitive(types_raw) for drive in os.listdir('%s/dosdevices' % common.ENV['WINEPREFIX']): # Skip device links if drive.endswith('::'): continue # Skip non-drive links (eg. printers) if drive.endswith(':') == False: continue drive_letter = drive[0].upper() drives[drive_letter] = {} drive_path = get_internal_path_for_drive(drive) #print("Drive: %s\nDrive path: %s" % (drive, drive_path)) drives[drive_letter]['mapping'] = os.path.realpath(drive_path) drive_device_path = get_internal_path_for_drive_device(drive) if drive_device_path != None: drives[drive_letter]['device'] = os.path.realpath(drive_device_path) if not basic: if os.path.exists("%s/.windows-label" % drive_path): f = open("%s/.windows-label" % drive_path) drives[drive_letter]['label'] = f.read().replace('\n','').replace('\r','') f.close() if os.path.exists("%s/.windows-serial" % drive_path): f = open("%s/.windows-serial" % drive_path) drives[drive_letter]['serial'] = f.read().replace('\n','').replace('\r','') f.close() if use_registry: if drive.lower() in types.keys(): drives[drive_letter]['type'] = types[drive.lower()] return drives
def get_devices(): output = {'out': {}, 'in': {}} devices = registry.get( 'HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio', quiet=True) # Testing data: #devices = {'Capture': {'{F339B1DC-2C23-4841-A3D0-BD7E2B2C221F}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Digital', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Digital', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{77B76B38-AB09-4BA3-AC05-DB3DB1423465}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Analog', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Analog', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{FC420A03-7C59-49E4-A042-EDC9117F4014}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'default', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'default', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}}, 'Render': {'{50E55B21-BE90-4F49-897F-91251492D44B}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'USB Sound Device - USB Audio', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'USB Sound Device - USB Audio', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{5137B298-5B1B-4948-B14A-2696B8C02110}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Digital', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Digital', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{9F815751-4036-412E-AAEB-7D6AC3932230}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'HDA ATI SB - ALC889A Analog', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'HDA ATI SB - ALC889A Analog', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}, '{8792A66E-6D13-4F9E-A608-1E5D12494D49}': {'Properties': {u'{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},2': u'default', u'{A45C254E-DF1C-4EFD-8020-67D146A850E0},14': u'default', u'{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3': 'hex:fe,ff,02,00,80,bb,00,00,00,dc,05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,aa,00,38,9b,71'}, u'DeviceState': u'dword:00000001'}}} for device_type, type_name in [('Render', 'out'), ('Capture', 'in')]: for device_id in devices[device_type].iterkeys(): # This is a bit of a hack. I have no idea how this data is structured, # I just use the first value that is a string instead of a hex value device_properties = devices[device_type][device_id]['Properties'] name = [ i for i in device_properties.itervalues() if type(i) == unicode ][0] output[type_name][name] = device_properties output[type_name][name]['id'] = device_id return output
def set_user_style(style, state): if style not in USER_PREFERENCES_MASK: raise ValueError, ("Argument style should be one of " + common.list_to_english_or( ('"{0}"'.format(i) for i in USER_PREFERENCES_MASK.keys()))) mask = registry.get('HKEY_CURRENT_USER\\Control Panel\\Desktop', 'UserPreferenceMask') if mask: mask = common.bitfield(mask) mask[USER_PREFERENCES_MASK[style]['bit']] = int(state) registry_value = mask.registry_value() registry.set({ 'HKEY_CURRENT_USER\\Control Panel\\Desktop': { 'UserPreferenceMask': registry_value } }) else: return False
def get(folder=None): """Get the path of the directory defined in "folder" (one of the keys in FOLDER_REG_NAMES).""" if folder == None: try: return CACHE['shellfolders'] except KeyError: pass else: folder = ' '.join((i.capitalize() for i in folder.split())) try: folders = CACHE['shellfolders'] return folders[folder] except KeyError: pass folders = {} """userpath = registry.get('HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\Environment', 'APPDATA') for foldername in ["Desktop", "My Documents", "My Pictures", "My Music", "My Videos"]: if userpath: folders[foldername] = os.path.realpath("%s/drive_c/%s/%s" % (common.ENV['WINEPREFIX'], "/".join(userpath[3:].split("\\")[:-1]), foldername)) else: folders[foldername] = util.getRealHome()""" reg_folders = registry.get( 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer', 'Shell Folders') for folder_name, reg_name in FOLDER_REG_NAMES.iteritems(): try: folder_path = os.readlink(util.wintounix(reg_folders[reg_name])) except (KeyError, OSError): folder_path = util.getRealHome() folder_name = ' '.join((i.capitalize() for i in folder_name.split())) folders[folder_name] = folder_path CACHE['shellfolders'] = folders if folder == None: return folders else: try: return folders[folder] except KeyError: return None
def get(use_registry=True, basic=False): """ Get a dictionary of the available drives for this configuration. Note that this might include less drives than winecfg will show since this functions will only include drives that are actually visible to programs, unlike winecfg.""" drives = {} types = {} if use_registry: types_raw = registry.get("HKEY_LOCAL_MACHINE\\Software\\Wine\\Drives", shallow=True) util.dict_to_case_insensitive(types_raw) for drive in os.listdir("%s/dosdevices" % common.ENV["WINEPREFIX"]): # Skip device links if drive.endswith("::"): continue drive_letter = drive[0].upper() drives[drive_letter] = {} drive_path = get_internal_path_for_drive(drive) # print("Drive: %s\nDrive path: %s" % (drive, drive_path)) drives[drive_letter]["mapping"] = os.path.realpath(drive_path) drive_device_path = get_internal_path_for_drive_device(drive) if drive_device_path != None: drives[drive_letter]["device"] = os.path.realpath(drive_device_path) if not basic: if os.path.exists("%s/.windows-label" % drive_path): f = open("%s/.windows-label" % drive_path) drives[drive_letter]["label"] = f.read().replace("\n", "").replace("\r", "") f.close() if os.path.exists("%s/.windows-serial" % drive_path): f = open("%s/.windows-serial" % drive_path) drives[drive_letter]["serial"] = f.read().replace("\n", "").replace("\r", "") f.close() if use_registry: if drive.lower() in types.keys(): drives[drive_letter]["type"] = types[drive.lower()] return drives