コード例 #1
0
def get_installaton_path_on_windows(fc_name):
    # tested for FreeCAD 0.18
    import itertools
    from winreg import (
        ConnectRegistry,
        HKEY_LOCAL_MACHINE,
        OpenKeyEx,
        QueryValueEx,
        CloseKey,
        KEY_READ,
        EnumKey,
        WindowsError,
    )

    try:
        root = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
        reg_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
        akey = OpenKeyEx(root, reg_path, 0, KEY_READ)
        for i in itertools.count():
            try:
                subname = EnumKey(akey, i)
            except WindowsError:
                break
            if subname.lower().find(fc_name.lower()) > 0:
                subkey = OpenKeyEx(akey, subname, 0, KEY_READ)
                pathname, regtype = QueryValueEx(subkey, "InstallLocation")
                CloseKey(subkey)
                return os.path.expandvars(pathname)
        # close key and root
        CloseKey(akey)
        CloseKey(root)
        return None
    except OSError:
        return None
コード例 #2
0
def __win32_finddll():
    from winreg import OpenKey, CloseKey, EnumKey, QueryValueEx, \
        QueryInfoKey, HKEY_LOCAL_MACHINE
    from distutils.version import LooseVersion
    import os

    dlls = []
    # Look up different variants of Ghostscript and take the highest
    # version for which the DLL is to be found in the filesystem.
    for key_name in ('AFPL Ghostscript', 'Aladdin Ghostscript',
                     'GPL Ghostscript', 'GNU Ghostscript'):
        try:
            k1 = OpenKey(HKEY_LOCAL_MACHINE, "Software\\%s" % key_name)
            for num in range(0, QueryInfoKey(k1)[0]):
                version = EnumKey(k1, num)
                try:
                    k2 = OpenKey(k1, version)
                    dll_path = QueryValueEx(k2, 'GS_DLL')[0]
                    CloseKey(k2)
                    if os.path.exists(dll_path):
                        dlls.append((LooseVersion(version), dll_path))
                except WindowsError:
                    pass
            CloseKey(k1)    
        except WindowsError:
            pass
    if dlls:
        dlls.sort()
        return dlls[-1][-1]
    else:
        return None
コード例 #3
0
def openurl(url):
    if platform == 'win32':
        # On Windows webbrowser.open calls os.startfile which calls ShellExecute which can't handle long arguments,
        # so discover and launch the browser directly.
        # https://blogs.msdn.microsoft.com/oldnewthing/20031210-00/?p=41553

        try:
            hkey = OpenKeyEx(HKEY_CURRENT_USER, r'Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice')
            (value, typ) = QueryValueEx(hkey, 'ProgId')
            CloseKey(hkey)
            if value in ['IE.HTTP', 'AppXq0fevzme2pys62n3e0fbqa7peapykr8v']:
                # IE and Edge can't handle long arguments so just use webbrowser.open and hope
                # https://blogs.msdn.microsoft.com/ieinternals/2014/08/13/url-length-limits/
                cls = None
            else:
                cls = value
        except:
            cls  = 'https'

        if cls:
            try:
                hkey = OpenKeyEx(HKEY_CLASSES_ROOT, r'%s\shell\open\command' % cls)
                (value, typ) = QueryValueEx(hkey, None)
                CloseKey(hkey)
                if 'iexplore' not in value.lower():
                    if '%1' in value:
                        subprocess.Popen(buf.value.replace('%1', url))
                    else:
                        subprocess.Popen('%s "%s"' % (buf.value, url))
                    return
            except:
                pass

    webbrowser.open(url)
コード例 #4
0
    def find_bluestacks4_hyperv(serial):
        """
        Find dynamic serial of Bluestacks4 Hyper-v Beta.
        Args:
            serial (str): 'bluestacks4-hyperv', 'bluestacks4-hyperv-2' for multi instance, and so on.
        Returns:
            str: 127.0.0.1:{port}
        """
        from winreg import ConnectRegistry, OpenKey, QueryInfoKey, EnumValue, CloseKey, HKEY_LOCAL_MACHINE

        logger.info("Use Bluestacks4 Hyper-v Beta")
        if serial == "bluestacks4-hyperv":
            folder_name = "Android"
        else:
            folder_name = f"Android_{serial[19:]}"

        logger.info("Reading Realtime adb port")
        reg_root = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
        sub_dir = f"SOFTWARE\\BlueStacks_bgp64_hyperv\\Guests\\{folder_name}\\Config"
        bs_keys = OpenKey(reg_root, sub_dir)
        bs_keys_count = QueryInfoKey(bs_keys)[1]
        for i in range(bs_keys_count):
            key_name, key_value, key_type = EnumValue(bs_keys, i)
            if key_name == "BstAdbPort":
                logger.info(f"New adb port: {key_value}")
                serial = f"127.0.0.1:{key_value}"
                break

        CloseKey(bs_keys)
        CloseKey(reg_root)
        return serial
コード例 #5
0
ファイル: pub2016.py プロジェクト: xme/CAPEv2
    def set_keys(self):

        baseOfficeKeyPath = r"Software\Microsoft\Office"
        installedVersions = list()
        try:
            officeKey = OpenKey(HKEY_CURRENT_USER, baseOfficeKeyPath, 0,
                                KEY_READ)
            for currentKey in range(0, QueryInfoKey(officeKey)[0]):
                isVersion = True
                officeVersion = EnumKey(officeKey, currentKey)
                if "." in officeVersion:
                    for intCheck in officeVersion.split("."):
                        if not intCheck.isdigit():
                            isVersion = False
                            break

                    if isVersion:
                        installedVersions.append(officeVersion)
            CloseKey(officeKey)
        except WindowsError:
            # Office isn't installed at all
            return

        for oVersion in installedVersions:
            key = CreateKeyEx(
                HKEY_CURRENT_USER,
                r"{0}\{1}\Publisher\Security".format(baseOfficeKeyPath,
                                                     oVersion), 0,
                KEY_SET_VALUE)

            SetValueEx(key, "VBAWarnings", 0, REG_DWORD, 1)
            SetValueEx(key, "AccessVBOM", 0, REG_DWORD, 1)
            SetValueEx(key, "ExtensionHardening", 0, REG_DWORD, 0)
            CloseKey(key)
コード例 #6
0
    def addFileAssociation(self):
        """ Associate *.fmu with the FMPy GUI """

        try:
            from winreg import HKEY_CURRENT_USER, KEY_WRITE, REG_SZ, OpenKey, CreateKey, SetValueEx, CloseKey

            python = sys.executable

            root, ext = os.path.splitext(python)

            pythonw = root + 'w' + ext

            if os.path.isfile(pythonw):
                target = pythonw
            else:
                target = python

            key_path = r'Software\Classes\fmpy.gui\shell\open\command'

            CreateKey(HKEY_CURRENT_USER, key_path)
            key = OpenKey(HKEY_CURRENT_USER, key_path, 0, KEY_WRITE)
            SetValueEx(key, '', 0, REG_SZ, '"%s" -m fmpy.gui "%%1"' % target)
            CloseKey(key)

            key_path = r'SOFTWARE\Classes\.fmu'

            CreateKey(HKEY_CURRENT_USER, key_path)
            key = OpenKey(HKEY_CURRENT_USER, key_path, 0, KEY_WRITE)
            SetValueEx(key, '', 0, REG_SZ, 'fmpy.gui')
            CloseKey(key)

            QMessageBox.information(self, "File association added", "The file association for *.fmu has been added")
        except Exception as e:
            QMessageBox.critical(self, "File association failed", "The file association for *.fmu could not be added. %s" % e)
コード例 #7
0
 def get_info(self, reg):
     key = OpenKey(HKEY_CURRENT_USER, reg)
     conns = []
     try:
         i = 0
         while 1:
             name = EnumKey(key, i)
             conns.append(name)
             i += 1
     except:
         pass
     hosts = []
     usernames = []
     passwords = []
     for i in conns:
         key = OpenKey(HKEY_CURRENT_USER, reg + '\\' + i)
         try:
             j = 0
             while 1:
                 name, value, type = EnumValue(key, j)
                 if name == 'Host':
                     hosts.append(value)
                 if name == 'UserName':
                     usernames.append(value)
                 if name == 'Pwd':
                     passwords.append(value)
                 j += 1
         except:
             pass
     CloseKey(key)
     for i in range(len(hosts)):
         if len(hosts[i]) is not 0:
             print 'host_name:' + hosts[i] + '  ' + 'username:'******'  ' + 'password:' + passwords[i]
コード例 #8
0
    def get_registry_key_value(root_folder: str, key_path: str, sub_key: str):

        if "hkey_local_machine" in root_folder.lower():
            root_folder = ConnectRegistry(None, HKEY_LOCAL_MACHINE)

        elif "hkey_classes_root" in root_folder.lower():
            root_folder = ConnectRegistry(None, HKEY_CLASSES_ROOT)

        elif "hkey_current_config" in root_folder.lower():
            root_folder = ConnectRegistry(None, HKEY_CURRENT_CONFIG)

        elif "hkey_current_user" in root_folder.lower():
            root_folder = ConnectRegistry(None, HKEY_CURRENT_USER)

        elif "hkey_users" in root_folder.lower():
            root_folder = ConnectRegistry(None, HKEY_USERS)

        try:
            registry_key = OpenKey(root_folder, key_path)

            system_value, reg_word = QueryValueEx(registry_key, sub_key)

            CloseKey(registry_key)

        except:
            # key not found
            system_value = None

        return system_value
コード例 #9
0
 def get_user_path() -> str:
     key = OpenKeyEx(HKEY_CURRENT_USER, 'Environment')
     try:
         path, _ = QueryValueEx(key, 'Path')
     finally:
         CloseKey(key)
     return path
コード例 #10
0
 def get_system_path() -> str:
     key = OpenKeyEx(HKEY_LOCAL_MACHINE, r'System\CurrentControlSet\Control\Session Manager\Environment')
     try:
         path, _ = QueryValueEx(key, 'Path')
     finally:
         CloseKey(key)
     return path
コード例 #11
0
def pathExists(hkey, regPath):
    try:
        reg = OpenKey(hkey, regPath)
    except WindowsError:
        return False
    CloseKey(reg)
    return True
コード例 #12
0
def win32_ver(release='', version='', csd='', ptype=''):
    try:
        from sys import getwindowsversion
    except ImportError:
        return release, version, csd, ptype
    try:
        from winreg import OpenKeyEx, QueryValueEx, CloseKey, HKEY_LOCAL_MACHINE
    except ImportError:
        from _winreg import OpenKeyEx, QueryValueEx, CloseKey, HKEY_LOCAL_MACHINE
    winver = getwindowsversion()
    maj, min, build = winver.platform_version or winver[:3]
    version = '{0}.{1}.{2}'.format(maj, min, build)
    release = _WIN32_CLIENT_RELEASES.get(
        (maj, min)) or _WIN32_CLIENT_RELEASES.get((maj, None)) or release
    if winver[:2] == (maj, min):
        try:
            csd = 'SP{}'.format(winver.service_pack_major)
        except AttributeError:
            if csd[:13] == 'Service Pack ':
                csd = 'SP' + csd[13:]
    if getattr(winver, 'product_type', None) == 3:
        release = _WIN32_SERVER_RELEASES.get(
            (maj, min)) or _WIN32_SERVER_RELEASES.get((maj, None)) or release
    key = None
    try:
        key = OpenKeyEx(HKEY_LOCAL_MACHINE,
                        'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion')
        ptype = QueryValueEx(key, 'CurrentType')[0]
    except:
        pass
    finally:
        if key:
            CloseKey(key)
    return release, version, csd, ptype
コード例 #13
0
def handle_windows_reg_key():
    """
    Attempts to add this app to the list of apps that launch at startup

    checks for value in registry, creates one if it doesn't exist
    will update key with new location of .exe if it was moved
    """

    from winreg import OpenKey, CloseKey, QueryValueEx, SetValueEx, ConnectRegistry, \
        HKEY_CURRENT_USER, REG_SZ, KEY_ALL_ACCESS

    name = 'wallspotify'
    path = sys.executable
    registry = ConnectRegistry(None, HKEY_CURRENT_USER)
    key = OpenKey(registry, r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0, KEY_ALL_ACCESS)

    def add():
        SetValueEx(key, name, 0, REG_SZ, path)

    try:
        data = QueryValueEx(key, name)
        if data[0] != path:
            add()
    except WindowsError:
        add()

    CloseKey(key)
コード例 #14
0
    def find_archive():
        reg_keys = [
            # Have confirmed sigthings of these keys:
            (HKEY_LOCAL_MACHINE, "Software\\Valve\\Steam", "InstallPath"),
            (HKEY_LOCAL_MACHINE, "Software\\Wow6432node\\Valve\\Steam",
             "InstallPath"),
            (HKEY_CURRENT_USER, "Software\\Valve\\Steam", "SteamPath"),

            # All the other possible combination, just to try everything:
            (HKEY_CURRENT_USER, "Software\\Wow6432node\\Valve\\Steam",
             "SteamPath"),
            (HKEY_LOCAL_MACHINE, "Software\\Valve\\Steam", "SteamPath"),
            (HKEY_LOCAL_MACHINE, "Software\\Wow6432node\\Valve\\Steam",
             "SteamPath"),
            (HKEY_CURRENT_USER, "Software\\Valve\\Steam", "InstallPath"),
            (HKEY_CURRENT_USER, "Software\\Wow6432node\\Valve\\Steam",
             "InstallPath"),
        ]

        for key, subkey, valkey in reg_keys:
            try:
                hkey = OpenKeyEx(key, subkey, 0, KEY_QUERY_VALUE)
                try:
                    value, valtype = QueryValueEx(hkey, valkey)
                    if valtype == REG_SZ:
                        return pjoin(
                            value,
                            "steamapps\\common\\CookServeDelicious3\\data.win")
                finally:
                    CloseKey(hkey)
            except FileNotFoundError:
                pass

        raise FileNotFoundError('game archive not found')
コード例 #15
0
ファイル: MainWindow.py プロジェクト: tinrabuzin/FMPy
    def addFileAssociation(self):
        """ Associate *.fmu with the FMPy GUI """

        try:
            from winreg import HKEY_CURRENT_USER, KEY_WRITE, REG_SZ, OpenKey, CreateKey, SetValueEx, CloseKey

            env = os.environ.get('CONDA_DEFAULT_ENV_')

            if env is None:
                python = sys.executable
                root, ext = os.path.splitext(python)
                pythonw = root + 'w' + ext

                if os.path.isfile(pythonw):
                    python = pythonw

                target = '"%s" -m fmpy.gui "%%1"' % python
            else:
                # activate the conda environment
                for path in os.environ["PATH"].split(os.pathsep):
                    activate = os.path.join(path, 'activate.bat')
                    if os.path.isfile(activate):
                        break

                windir = os.environ['WINDIR']
                cmd = os.path.join(windir, 'System32', 'cmd.exe')

                target = r'%s /C ""%s" %s && python -m fmpy.gui %%1"' % (cmd, activate, env)

            key_path = r'Software\Classes\fmpy.gui\shell\open\command'

            CreateKey(HKEY_CURRENT_USER, key_path)
            key = OpenKey(HKEY_CURRENT_USER, key_path, 0, KEY_WRITE)
            SetValueEx(key, '', 0, REG_SZ, target)
            CloseKey(key)

            key_path = r'SOFTWARE\Classes\.fmu'

            CreateKey(HKEY_CURRENT_USER, key_path)
            key = OpenKey(HKEY_CURRENT_USER, key_path, 0, KEY_WRITE)
            SetValueEx(key, '', 0, REG_SZ, 'fmpy.gui')
            CloseKey(key)

            QMessageBox.information(self, "File association added", "The file association for *.fmu has been added")
        except Exception as e:
            QMessageBox.critical(self, "File association failed", "The file association for *.fmu could not be added. %s" % e)
コード例 #16
0
    def get(self, default=None):
        key = self.open_key(KEY_READ)
        try:
            value, regtype = QueryValueEx(key, self.key)
        except FileNotFoundError:
            value = default

        CloseKey(key)
        return value
コード例 #17
0
def set_reg(name, value):
    """Set DPI via registry key"""
    try:
        CreateKey(HKEY_CURRENT_USER, REG_PATH)
        registry_key = OpenKey(HKEY_CURRENT_USER, REG_PATH, 0, KEY_WRITE)
        SetValueEx(registry_key, name, 0, REG_SZ, value)
        CloseKey(registry_key)
        return True
    except:
        logger.exception("Exception occurred - Cannot Change DPI (set_reg)")
コード例 #18
0
def readValues(hkey, regPath):
    if not pathExists(hkey, regPath):
        return -1
    reg = OpenKey(hkey, regPath)
    values = {}
    noOfValues = QueryInfoKey(reg)[1]
    for i in range(0, noOfValues):
        values[EnumValue(reg, i)[0]] = EnumValue(reg, i)[1]
    CloseKey(reg)
    return values
コード例 #19
0
def readSubKeys(hkey, regPath):
    if not pathExists(hkey, regPath):
        return -1
    reg = OpenKey(hkey, regPath)
    subKeys = []
    noOfSubkeys = QueryInfoKey(reg)[0]
    for i in range(0, noOfSubkeys):
        subKeys.append(EnumKey(reg, i))
    CloseKey(reg)
    return subKeys
コード例 #20
0
    def find_bluestacks5_hyperv(serial):
        """
        Find dynamic serial of Bluestacks5 Hyper-v.
        Args:
            serial (str): 'bluestacks5-hyperv', 'bluestacks5-hyperv-1' for multi instance, and so on.
        Returns:
            str: 127.0.0.1:{port}
        """
        from winreg import ConnectRegistry, OpenKey, QueryInfoKey, EnumValue, CloseKey, HKEY_LOCAL_MACHINE

        logger.info("Use Bluestacks5 Hyper-v")
        logger.info("Reading Realtime adb port")

        if serial == "bluestacks5-hyperv":
            parameter_name = "bst.instance.Nougat64.status.adb_port"
        else:
            parameter_name = f"bst.instance.Nougat64_{serial[19:]}.status.adb_port"

        reg_root = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
        sub_dir = f"SOFTWARE\\BlueStacks_nxt"
        bs_keys = OpenKey(reg_root, sub_dir)
        bs_keys_count = QueryInfoKey(bs_keys)[1]
        for i in range(bs_keys_count):
            key_name, key_value, key_type = EnumValue(bs_keys, i)
            if key_name == "UserDefinedDir":
                logger.info(f"Configuration file directory: {key_value}")
                with open(f"{key_value}\\bluestacks.conf",
                          'r',
                          encoding='utf-8') as f:
                    content = f.read()
                    port = re.findall(rf'{parameter_name}="(.*?)"\n', content,
                                      re.S)
                    if len(port) > 0:
                        logger.info(f"Match to dynamic port: {port[0]}")
                        serial = f"127.0.0.1:{port[0]}"
                    else:
                        logger.warning(f"Did not match the result: {serial}.")
                break

        CloseKey(bs_keys)
        CloseKey(reg_root)
        return serial
コード例 #21
0
def getSynthRiderInstallFolder():
    try:
        registry_key = OpenKey(
            HKEY_LOCAL_MACHINE,
            r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 885000',
            0, KEY_READ)
        value, _ = QueryValueEx(registry_key, r'InstallLocation')
        CloseKey(registry_key)
        return value
    except WindowsError:
        return None
コード例 #22
0
def write_destination_folder_to_reg(
        destination_folder: Path,
        reg_path: str = R'SOFTWARE\lyckantropen\moonlight_hdr_launcher'
) -> None:
    _logger.debug(
        f'Writing destination_folder="{destination_folder}" to registry at "{reg_path}"'
    )
    CreateKey(HKEY_CURRENT_USER, reg_path)
    registry_key = OpenKey(HKEY_CURRENT_USER, reg_path, 0, KEY_WRITE)
    SetValueEx(registry_key, 'destination_folder', 0, REG_SZ,
               str(destination_folder))
    CloseKey(registry_key)
コード例 #23
0
ファイル: error_window.py プロジェクト: parallel-p/please
 def __exit__(self, type, value, traceback):
     #print('__exit__')
     try:
         if "Windows-7" in platform() and self.state:
             key = OpenKey(HKEY_LOCAL_MACHINE, self.keyVal, 0,
                           KEY_ALL_ACCESS)
             SetValueEx(key, self.name, 0, REG_DWORD, self.value)
             CloseKey(key)
     except WindowsError:
         logger.warning(
             "It seems that we have no rights to change register (__exit__)"
         )
コード例 #24
0
ファイル: test_winreg.py プロジェクト: Qointum/pypy
    def test_close(self):
        from winreg import OpenKey, CloseKey, FlushKey, QueryInfoKey
        key = OpenKey(self.root_key, self.test_key_name)
        sub_key = OpenKey(key, "sub_key")

        int_sub_key = int(sub_key)
        FlushKey(sub_key)
        CloseKey(sub_key)
        raises(EnvironmentError, QueryInfoKey, int_sub_key)

        int_key = int(key)
        key.Close()
        raises(EnvironmentError, QueryInfoKey, int_key)

        key = OpenKey(self.root_key, self.test_key_name)
        int_key = key.Detach()
        QueryInfoKey(int_key)  # works
        key.Close()
        QueryInfoKey(int_key)  # still works
        CloseKey(int_key)
        raises(EnvironmentError, QueryInfoKey, int_key)  # now closed
コード例 #25
0
def delete_registry_tree(root, subkey):
    try:
        hkey = OpenKey(root, subkey, access=KEY_ALL_ACCESS)
    except OSError:
        return
    while True:
        try:
            subsubkey = EnumKey(hkey, 0)
        except OSError:
            break
        delete_registry_tree(hkey, subsubkey)
    CloseKey(hkey)
    DeleteKey(root, subkey)
コード例 #26
0
ファイル: sys_utils.py プロジェクト: Kipre/kipr
def toggle_color_mode():
    """Toggles system color scheme preference."""
    from winreg import ConnectRegistry, HKEY_CURRENT_USER, REG_SZ, KEY_ALL_ACCESS, OpenKeyEx, QueryValueEx, SetValueEx, CloseKey
    root = ConnectRegistry(None, HKEY_CURRENT_USER)
    policy_key = OpenKeyEx(
        root,
        r"SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize",
        access=KEY_ALL_ACCESS)
    light, _ = QueryValueEx(policy_key, "AppsUseLightTheme")
    SetValueEx(policy_key, "AppsUseLightTheme", 0, REG_SZ, str(1 - int(light)))
    SetValueEx(policy_key, "SystemUsesLightTheme", 0, REG_SZ,
               str(1 - int(light)))
    CloseKey(policy_key)
コード例 #27
0
def persist(file_path):
    """
    Persist binary passed to the function.
    So, this function adds a new value to a specific registry key.
    All binaries specified in this registry key runs on each computer startup.
    :param file_path: path to the binary we want to persist
    :return:
    """
    run_sub_key = r"Software\Microsoft\Windows\CurrentVersion\Run"
    value_name = "MSDefender"  # this value doesn't look suspicious
    run_key = OpenKey(HKEY_LOCAL_MACHINE, run_sub_key, 0, KEY_ALL_ACCESS)
    SetValueEx(run_key, value_name, 0, REG_SZ, file_path)
    CloseKey(run_key)
コード例 #28
0
def openParlatype(ctx):
    if sys.platform == 'win32':
        registry = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
        try:
            key = OpenKey(registry,
                          r'SOFTWARE\Microsoft\Windows' +
                          r'\CurrentVersion\Uninstall\Parlatype',
                          0, KEY_READ)
        except FileNotFoundError:
            CloseKey(registry)
            # TODO add a clickable download link
            showMessage(ctx, _("Parlatype is not installed."))
            return
        [path, regtype] = (QueryValueEx(key, "InstallLocation"))
        CloseKey(key)
        CloseKey(registry)
        cmd = os.path.join(path, 'bin', 'parlatype.exe')
        cmdline = [cmd]
    else:
        cmdline = ["parlatype"]

    smgr = ctx.getServiceManager()
    desktop = smgr.createInstanceWithContext(
            "com.sun.star.frame.Desktop", ctx)
    doc = desktop.getCurrentComponent()
    url = get_link_url(doc)
    if url is not None:
        cmdline.append(url)

    try:
        subprocess.Popen(cmdline)
    except FileNotFoundError:
        # Try Flatpak in a different thread, because we're waiting for its
        # return code/stderr and that would keep the button pressed.
        t = threading.Thread(target=launchFlatpak, args=(self.ctx, url,))
        t.daemon = True
        t.start()
コード例 #29
0
ファイル: error_window.py プロジェクト: parallel-p/please
 def __enter__(self):
     #print('__enter__')
     try:
         if "Windows-7" in platform():
             self.value = 0  #QueryValue(keyVal, name)
             key = OpenKey(HKEY_LOCAL_MACHINE, self.keyVal, 0,
                           KEY_ALL_ACCESS)
             SetValueEx(key, self.name, 0, REG_DWORD, 1)
             CloseKey(key)
             self.state = True
     except:  # WindowsError:
         logger.warning(
             "It seems that we have no rights to change register (__enter__)"
         )
     return self
コード例 #30
0
ファイル: platform.py プロジェクト: zzz-i2p/cpython
def win32_ver(release='', version='', csd='', ptype=''):
    try:
        from sys import getwindowsversion
    except ImportError:
        return release, version, csd, ptype
    try:
        from winreg import OpenKeyEx, QueryValueEx, CloseKey, HKEY_LOCAL_MACHINE
    except ImportError:
        from _winreg import OpenKeyEx, QueryValueEx, CloseKey, HKEY_LOCAL_MACHINE

    winver = getwindowsversion()
    maj, min, build = winver.platform_version or winver[:3]
    version = '{0}.{1}.{2}'.format(maj, min, build)

    release = (_WIN32_CLIENT_RELEASES.get((maj, min)) or
               _WIN32_CLIENT_RELEASES.get((maj, None)) or
               release)

    # getwindowsversion() reflect the compatibility mode Python is
    # running under, and so the service pack value is only going to be
    # valid if the versions match.
    if winver[:2] == (maj, min):
        try:
            csd = 'SP{}'.format(winver.service_pack_major)
        except AttributeError:
            if csd[:13] == 'Service Pack ':
                csd = 'SP' + csd[13:]

    # VER_NT_SERVER = 3
    if getattr(winver, 'product_type', None) == 3:
        release = (_WIN32_SERVER_RELEASES.get((maj, min)) or
                   _WIN32_SERVER_RELEASES.get((maj, None)) or
                   release)

    key = None
    try:
        key = OpenKeyEx(HKEY_LOCAL_MACHINE,
                        r'SOFTWARE\Microsoft\Windows NT\CurrentVersion')
        ptype = QueryValueEx(key, 'CurrentType')[0]
    except:
        pass
    finally:
        if key:
            CloseKey(key)

    return release, version, csd, ptype