我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用winreg.KEY_READ。
def CoCreateInstanceC2R (self, store, reg, clsid, iid) : # Ugly code to find DLL in C2R version of COM object and get a COM # object despite the fact that COM doesn't handle C2R try: # Get DLL to load from 2R register aReg = winreg.ConnectRegistry(None, store) aKey = winreg.OpenKey(aReg, reg, 0, winreg.KEY_READ | winreg.KEY_WOW64_64KEY) dummy_n, IconvDLL, dummy_t = winreg.EnumValue(aKey, 0) winreg.CloseKey(aKey) winreg.CloseKey(aReg) # Create OLE object from DLL IconvOLE = ctypes.OleDLL(IconvDLL) # Get COM Instance from OLE clsid_class = uuid.UUID(str(clsid)).bytes_le iclassfactory = uuid.UUID(str(pythoncom.IID_IClassFactory)).bytes_le com_classfactory = ctypes.c_long(0) IconvOLE.DllGetClassObject(clsid_class, iclassfactory, ctypes.byref(com_classfactory)) MyFactory = pythoncom.ObjectFromAddress(com_classfactory.value, pythoncom.IID_IClassFactory) return MyFactory.CreateInstance (None, str(iid)) except: return None
def getEnvironment(scope, name): assert scope in ('user', 'system') value = '' if platform.system() == 'Windows': root, subkey = getWindowsEnvironmentKey(scope) key = winreg.OpenKey(root, subkey, 0, winreg.KEY_READ) try: value, _ = winreg.QueryValueEx(key, name) except WindowsError: value = '' else: if name.lower() == 'uid': return str(os.geteuid()) if len(os_user_name) > 0: ret, cret = syscommand('su -l %s -c \'echo ${%s}\'' % (os_user_name, name), True) if len(ret) > 0: value = ret[0].strip() else: value = os.environ.get(name, "") return value
def getenv(self, name): key = winreg.OpenKey(self.root, self.subkey, 0, winreg.KEY_READ) try: value, _ = winreg.QueryValueEx(key, name) except WindowsError: value = '' winreg.CloseKey(key) return value
def _reg_query_sub_keys(handle, key, keylist = []): reghandle = reg.OpenKey(handle, key, 0, reg.KEY_READ) try: i = 0 while True: subkey = reg.EnumKey(reghandle, i) i += 1 _reg_query_sub_keys(handle, key + subkey + "\\", keylist) except WindowsError as ex: if ex.winerror == 259: keylist.append(key) finally: reg.CloseKey(reghandle)
def cal_share_path(): global share_path if os.path.isfile("configure.ac"): share_path=os.getcwd() return if os.path.isfile("ver.py"): share_path=os.path.abspath(os.path.join(os.getcwd(), os.pardir)) return if running_on_linux()==False: try: registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, "Software\\gpvdm", 0, winreg.KEY_READ) value, regtype = winreg.QueryValueEx(registry_key, "installpath") winreg.CloseKey(registry_key) share_path=value except WindowsError: if os.path.isfile(os.path.join(os.getcwd(),"gpvdm_core.exe")): share_path=os.getcwd() else: share_path="c:\\gpvdm" print("No registry key found using default",share_path) else: if os.path.isdir("/usr/lib64/gpvdm"): share_path="/usr/lib64/gpvdm/" elif os.path.isdir("/usr/lib/gpvdm"): share_path="/usr/lib/gpvdm/" else: share_path=os.path.dirname(os.path.dirname(os.path.realpath(__file__))) print("I don't know where the shared files are assuming ",share_path)
def read_registry(key, valueex): reg_key = OpenKey(HKEY_LOCAL_MACHINE, key, 0, KEY_READ) return QueryValueEx(reg_key, valueex)
def _get_uid(self): hKey = regedit.OpenKey(regedit.HKEY_LOCAL_MACHINE, r"SOFTWARE\\Microsoft\\Cryptography", 0, regedit.KEY_READ | regedit.KEY_WOW64_64KEY) value, _ = regedit.QueryValueEx(hKey, "MachineGuid") return value
def check_startup(): key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0, winreg.KEY_READ) i = 0 while True: try: a = winreg.EnumValue(key,i) i+=1 if a[0] == REGISTRY_NAME: return True except OSError: break key.Close() return False
def _winreg_read(self, base, path, key): try: if self.is_win_x64: hkey = winreg.CreateKeyEx(base, path, 0, winreg.KEY_READ | winreg.KEY_WOW64_32KEY) else: hkey = winreg.CreateKeyEx(base, path, 0, winreg.KEY_READ) value = winreg.QueryValueEx(hkey, key) return value except OSError: return None
def findAtlasPath(): """Attempt to extract Atlas path from registry""" for v in vkeys: try: key = winreg.OpenKey(HKEY_CURRENT_USER, vkeys[v], 0, KEY_READ) val = winreg.QueryValueEx(key, r"TRENV EJ") atlasPath = val[0].rpartition('\\')[0] return atlasPath except: pass raise MissingAtlasException()
def msbuild(name_or_gen_or_ver): """get the MSBuild.exe path""" ver = to_ver(name_or_gen_or_ver) if ver < 12: # VS2012 and below import winreg as wr msbuild = None msbvers = ('4.0', '3.5', '2.0') for v in msbvers: key = "SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\{}\\MS??BuildToolsPath" try: val = wr.OpenKey(wr.HKEY_LOCAL_MACHINE, key.format(ver), 0, wr.KEY_READ) msbuild = os.path.join(val, 'MSBuild.exe') break except: pass # default to some probable value if no registry key was found if msbuild is None: val = 'C:\\Windows\Microsoft.NET\Framework{}\\v{}\\MSBuild.exe' for v in msbvers: msbuild = val.format('64' if util.in_64bit() else '', '3.5') if os.path.exists(msbuild): break else: root = os.environ['ProgramFiles(x86)'] if ver < 15 else vsdir(ver) val = '{}\\MSBuild\\{}.0\\bin\\{}MSBuild.exe' msbuild = val.format(root, ver, 'amd64\\' if util.in_64bit() else '') return msbuild
def _autodetect_official_installreg(self): try: key = winreg.OpenKey( winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\PUTTY_is1", access=winreg.KEY_READ | winreg.KEY_WOW64_32KEY) value = winreg.QueryValueEx(key, "InstallLocation")[0] winreg.CloseKey(key) exe_file = os.path.join(value, self.EXE_NAME_OFFICIAL) if os.path.exists(exe_file): return exe_file except: pass return None
def _autodetect_official_installreg(self): try: key = winreg.OpenKey( winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\FileZilla Client", access=winreg.KEY_READ | winreg.KEY_WOW64_32KEY) value = winreg.QueryValueEx(key, "InstallLocation")[0] winreg.CloseKey(key) exe_file = os.path.join(value, self.EXE_NAME_OFFICIAL) if os.path.exists(exe_file): return exe_file except: pass return None
def _autodetect_official_installreg(self): try: key = winreg.OpenKey( winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\winscp3_is1", access=winreg.KEY_READ | winreg.KEY_WOW64_32KEY) value = winreg.QueryValueEx(key, "InstallLocation")[0] winreg.CloseKey(key) exe_file = os.path.join(value, self.EXE_NAME_OFFICIAL) if os.path.exists(exe_file): return exe_file except: pass return None
def get_machine_id(): global _machine_id rv = _machine_id if rv is not None: return rv def _generate(): # Potential sources of secret information on linux. The machine-id # is stable across boots, the boot id is not for filename in '/etc/machine-id', '/proc/sys/kernel/random/boot_id': try: with open(filename, 'rb') as f: return f.readline().strip() except IOError: continue # On OS X we can use the computer's serial number assuming that # ioreg exists and can spit out that information. try: # Also catch import errors: subprocess may not be available, e.g. # Google App Engine # See https://github.com/pallets/werkzeug/issues/925 from subprocess import Popen, PIPE dump = Popen(['ioreg', '-c', 'IOPlatformExpertDevice', '-d', '2'], stdout=PIPE).communicate()[0] match = re.search(b'"serial-number" = <([^>]+)', dump) if match is not None: return match.group(1) except (OSError, ImportError): pass # On Windows we can use winreg to get the machine guid wr = None try: import winreg as wr except ImportError: try: import _winreg as wr except ImportError: pass if wr is not None: try: with wr.OpenKey(wr.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\Cryptography', 0, wr.KEY_READ | wr.KEY_WOW64_64KEY) as rk: return wr.QueryValueEx(rk, 'MachineGuid')[0] except WindowsError: pass _machine_id = rv = _generate() return rv
def get_machine_id(): global _machine_id rv = _machine_id if rv is not None: return rv def _generate(): # Potential sources of secret information on linux. The machine-id # is stable across boots, the boot id is not for filename in '/etc/machine-id', '/proc/sys/kernel/random/boot_id': try: with open(filename, 'rb') as f: f.readline().strip() except IOError: continue # On OS X we can use the computer's serial number assuming that # ioreg exists and can spit out that information. from subprocess import Popen, PIPE try: dump = Popen(['ioreg', '-c', 'IOPlatformExpertDevice', '-d', '2'], stdout=PIPE).communicate()[0] match = re.search(b'"serial-number" = <([^>]+)', dump) if match is not None: return match.group(1) except OSError: pass # On Windows we can use winreg to get the machine guid wr = None try: import winreg as wr except ImportError: try: import _winreg as wr except ImportError: pass if wr is not None: try: with wr.OpenKey(wr.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\Cryptography', 0, wr.KEY_READ | wr.KEY_WOW64_64KEY) as rk: return wr.QueryValueEx(rk, 'MachineGuid')[0] except WindowsError: pass _machine_id = rv = _generate() return rv
def get_machine_id(): global _machine_id rv = _machine_id if rv is not None: return rv def _generate(): # Potential sources of secret information on linux. The machine-id # is stable across boots, the boot id is not for filename in '/etc/machine-id', '/proc/sys/kernel/random/boot_id': try: with open(filename, 'rb') as f: return f.readline().strip() except IOError: continue # On OS X we can use the computer's serial number assuming that # ioreg exists and can spit out that information. from subprocess import Popen, PIPE try: dump = Popen(['ioreg', '-c', 'IOPlatformExpertDevice', '-d', '2'], stdout=PIPE).communicate()[0] match = re.search(b'"serial-number" = <([^>]+)', dump) if match is not None: return match.group(1) except OSError: pass # On Windows we can use winreg to get the machine guid wr = None try: import winreg as wr except ImportError: try: import _winreg as wr except ImportError: pass if wr is not None: try: with wr.OpenKey(wr.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Microsoft\\Cryptography', 0, wr.KEY_READ | wr.KEY_WOW64_64KEY) as rk: return wr.QueryValueEx(rk, 'MachineGuid')[0] except WindowsError: pass _machine_id = rv = _generate() return rv
def load_config(): global CONFIG if os.path.isfile( CONFIG_FILEPATH ): try: with open( CONFIG_FILEPATH, 'rb' ) as f: CONFIG = pickle.load( f ) except: print('[ERROR]: Can not read config from %s' %CONFIG_FILEPATH) for tag in _CONFIG_DEFAULTS_ALL: if tag not in CONFIG: CONFIG[ tag ] = _CONFIG_DEFAULTS_ALL[ tag ] for tag in _CONFIG_TAGS_: if tag not in CONFIG: if sys.platform.startswith('win'): CONFIG[ tag ] = _CONFIG_DEFAULTS_WINDOWS[ tag ] elif sys.platform.startswith('linux') or sys.platform.startswith('darwin') or sys.platform.startswith('freebsd'): CONFIG[ tag ] = _CONFIG_DEFAULTS_UNIX[ tag ] else: print( 'ERROR: unknown platform' ) assert 0 try: if sys.platform.startswith('win'): import winreg # Find the blender2ogre install path from windows registry registry_key = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, r'Software\blender2ogre', 0, winreg.KEY_READ) exe_install_dir = winreg.QueryValueEx(registry_key, "Path")[0] if exe_install_dir != "": # OgreXmlConverter if os.path.isfile(exe_install_dir + "OgreXmlConverter.exe"): print ("Using OgreXmlConverter from install path:", exe_install_dir + "OgreXmlConverter.exe") CONFIG['OGRETOOLS_XML_CONVERTER'] = exe_install_dir + "OgreXmlConverter.exe" # Run auto updater as silent. Notifies user if there is a new version out. # This will not show any UI if there are no update and will go to network # only once per 2 days so it wont be spending much resources either. # todo: Move this to a more appropriate place than load_config() if os.path.isfile(exe_install_dir + "check-for-updates.exe"): subprocess.Popen([exe_install_dir + "check-for-updates.exe", "/silent"]) except Exception as e: print("Exception while reading windows registry:", e) # Setup temp hidden RNA to expose the file paths for tag in _CONFIG_TAGS_: default = CONFIG[ tag ] func = eval( 'lambda self,con: CONFIG.update( {"%s" : self.%s} )' %(tag,tag) ) if type(default) is bool: prop = BoolProperty( name=tag, description='updates bool setting', default=default, options={'SKIP_SAVE'}, update=func ) else: prop = StringProperty( name=tag, description='updates path setting', maxlen=128, default=default, options={'SKIP_SAVE'}, update=func ) setattr( bpy.types.WindowManager, tag, prop ) return CONFIG