예제 #1
0
파일: win.py 프로젝트: jwg4/dateutil
 def list():
     """Return a list of all time zones known to the system."""
     with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle:
         with winreg.OpenKey(handle, TZKEYNAME) as tzkey:
             result = [winreg.EnumKey(tzkey, i)
                       for i in range(winreg.QueryInfoKey(tzkey)[0])]
     return result
예제 #2
0
 def find_available_vc_vers(self):
     """
     Find all available Microsoft Visual C++ versions.
     """
     vckeys = (self.ri.vc, self.ri.vc_for_python)
     vc_vers = []
     for hkey in self.ri.HKEYS:
         for key in vckeys:
             try:
                 bkey = winreg.OpenKey(hkey, key, 0, winreg.KEY_READ)
             except (OSError, IOError):
                 continue
             subkeys, values, _ = winreg.QueryInfoKey(bkey)
             for i in range(values):
                 try:
                     ver = float(winreg.EnumValue(bkey, i)[0])
                     if ver not in vc_vers:
                         vc_vers.append(ver)
                 except ValueError:
                     pass
             for i in range(subkeys):
                 try:
                     ver = float(winreg.EnumKey(bkey, i))
                     if ver not in vc_vers:
                         vc_vers.append(ver)
                 except ValueError:
                     pass
     return sorted(vc_vers)
    def check_fips_mode_os():
        """ Function to check for the OS fips mode

        :param key: string to encrypt with
        :type key: str.

        :returns: returns True if FIPS mode is active, False otherwise
        """
        fips = False
        if os.name == 'nt':
            reg = winreg.ConnectRegistry(None, HKEY_LOCAL_MACHINE)
            try:
                reg = winreg.OpenKey(reg, 'System\\CurrentControlSet\\Control\\'\
                                            'Lsa\\FipsAlgorithmPolicy')
                winreg.QueryInfoKey(reg)
                value, _ = winreg.QueryValueEx(reg, 'Enabled')
                if value:
                    fips = True
            except:
                fips = False
        else:
            try:
                fipsfile = open("/proc/sys/crypto/fips_enabled")
                result = fipsfile.readline()
                if int(result) > 0:
                    fipsfile = True
                fipsfile.close()
            except:
                fips = False
        return fips
예제 #4
0
def valuestodict(key):
    """Convert a registry key's values to a dictionary."""
    dout = {}
    size = winreg.QueryInfoKey(key)[1]
    tz_res = None

    for i in range(size):
        key_name, value, dtype = winreg.EnumValue(key, i)
        if (dtype == winreg.REG_DWORD
                or dtype == winreg.REG_DWORD_LITTLE_ENDIAN):
            # If it's a DWORD (32-bit integer), it's stored as unsigned - convert
            # that to a proper signed integer
            if value & (1 << 31):
                value = value - (1 << 32)
        elif dtype == winreg.REG_SZ:
            # If it's a reference to the tzres DLL, load the actual string
            if value.startswith("@tzres"):
                tz_res = tz_res or tzres()
                value = tz_res.name_from_string(value)

            value = value.rstrip("\x00")  # Remove trailing nulls

        dout[key_name] = value

    return dout
예제 #5
0
def valuestodict(key):
    """Convert a registry key's values to a dictionary."""
    dict = {}
    size = winreg.QueryInfoKey(key)[1]
    for i in range(size):
        data = winreg.EnumValue(key, i)
        dict[data[0]] = data[1]
    return dict
예제 #6
0
 def list():
     """Return a list of all time zones known to the system."""
     handle = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
     tzkey = winreg.OpenKey(handle, TZKEYNAME)
     result = [winreg.EnumKey(tzkey, i)
               for i in range(winreg.QueryInfoKey(tzkey)[0])]
     tzkey.Close()
     handle.Close()
     return result
예제 #7
0
def get_acroversion():
    " Return version of Adobe Acrobat executable or None"
    from six.moves import winreg
    adobesoft = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r'Software\Adobe')
    for index in range(winreg.QueryInfoKey(adobesoft)[0]):
        key = winreg.EnumKey(adobesoft, index)
        if "acrobat" in key.lower():
            acrokey = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
                                     'Software\\Adobe\\%s' % key)
            for index in range(winreg.QueryInfoKey(acrokey)[0]):
                numver = winreg.EnumKey(acrokey, index)
                try:
                    res = winreg.QueryValue(
                        winreg.HKEY_LOCAL_MACHINE,
                        'Software\\Adobe\\%s\\%s\\InstallPath' % (key, numver))
                    return res
                except Exception:
                    pass
    return None
예제 #8
0
def win32InstalledFonts(directory=None, fontext='ttf'):
    """
    Search for fonts in the specified font directory, or use the
    system directories if none given.  A list of TrueType font
    filenames are returned by default, or AFM fonts if *fontext* ==
    'afm'.
    """

    from six.moves import winreg
    if directory is None:
        directory = win32FontDirectory()

    fontext = get_fontext_synonyms(fontext)

    key, items = None, set()
    for fontdir in MSFontDirectories:
        try:
            local = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, fontdir)
        except OSError:
            continue
        if not local:
            return list_fonts(directory, fontext)
        try:
            for j in range(winreg.QueryInfoKey(local)[1]):
                try:
                    key, direc, tp = winreg.EnumValue(local, j)
                    if not isinstance(direc, six.string_types):
                        continue
                    # Work around for https://bugs.python.org/issue25778, which
                    # is fixed in Py>=3.6.1.
                    direc = direc.split("\0", 1)[0]
                    if not os.path.dirname(direc):
                        direc = os.path.join(directory, direc)
                    direc = os.path.abspath(direc).lower()
                    if os.path.splitext(direc)[1][1:] in fontext:
                        items.add(direc)
                except EnvironmentError:
                    continue
                except WindowsError:
                    continue
                except MemoryError:
                    continue
            return list(items)
        finally:
            winreg.CloseKey(local)
    return None
예제 #9
0
def win32InstalledFonts(directory=None, fontext='ttf'):
    """
    Search for fonts in the specified font directory, or use the
    system directories if none given.  A list of TrueType font
    filenames are returned by default, or AFM fonts if *fontext* ==
    'afm'.
    """

    from six.moves import winreg
    if directory is None:
        directory = win32FontDirectory()

    fontext = get_fontext_synonyms(fontext)

    key, items = None, {}
    for fontdir in MSFontDirectories:
        try:
            local = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, fontdir)
        except OSError:
            continue

        if not local:
            return list_fonts(directory, fontext)
        try:
            for j in range(winreg.QueryInfoKey(local)[1]):
                try:
                    key, direc, any = winreg.EnumValue(local, j)
                    if not is_string_like(direc):
                        continue
                    if not os.path.dirname(direc):
                        direc = os.path.join(directory, direc)
                    direc = os.path.abspath(direc).lower()
                    if os.path.splitext(direc)[1][1:] in fontext:
                        items[direc] = 1
                except EnvironmentError:
                    continue
                except WindowsError:
                    continue
                except MemoryError:
                    continue
            return list(six.iterkeys(items))
        finally:
            winreg.CloseKey(local)
    return None