uTools-Manuals/docs/python/winreg.html
2019-04-21 11:50:48 +08:00

7 lines
59 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="body" role="main"><div class="section" id="module-winreg"><h1><span class="yiyi-st" id="yiyi-10">34.3. <a class="reference internal" href="#module-winreg" title="winreg: Routines and objects for manipulating the Windows registry. (Windows)"><code class="xref py py-mod docutils literal"><span class="pre">winreg</span></code></a> - Windows注册表访问</span></h1><p><span class="yiyi-st" id="yiyi-11">这些函数将Windows注册表API暴露给Python。</span><span class="yiyi-st" id="yiyi-12">代替使用整数作为注册表句柄,<a class="reference internal" href="#handle-object"><span>handle object</span></a>用于确保句柄正确关闭,即使程序员忽略明确关闭它们。</span></p><div class="versionchanged" id="exception-changed"><p><span class="yiyi-st" id="yiyi-13"><span class="versionmodified">在版本3.3中更改:</span>此模块中的几个函数用于引发<a class="reference internal" href="exceptions.html#WindowsError" title="WindowsError"><code class="xref py py-exc docutils literal"><span class="pre">WindowsError</span></code></a>,现在是<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a>的别名。</span></p></div><div class="section" id="functions"><h2><span class="yiyi-st" id="yiyi-14">34.3.1. </span><span class="yiyi-st" id="yiyi-15">Functions</span></h2><p><span class="yiyi-st" id="yiyi-16">该模块提供以下功能:</span></p><dl class="function"><dt id="winreg.CloseKey"><span class="yiyi-st" id="yiyi-17"> <code class="descclassname">winreg.</code><code class="descname">CloseKey</code><span class="sig-paren">(</span><em>hkey</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-18">关闭以前打开的注册表项。</span><span class="yiyi-st" id="yiyi-19"><em>hkey</em>参数指定先前打开的键。</span></p><div class="admonition note"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-20">注意</span></p><p class="last"><span class="yiyi-st" id="yiyi-21">如果<em>hkey</em>未使用此方法关闭(或通过<a class="reference internal" href="#winreg.PyHKEY.Close" title="winreg.PyHKEY.Close"><code class="xref py py-meth docutils literal"><span class="pre">hkey.Close()</span></code></a>则当python销毁<em>hkey时它会关闭</em></span></p></div></dd></dl><dl class="function"><dt id="winreg.ConnectRegistry"><span class="yiyi-st" id="yiyi-22"> <code class="descclassname">winreg.</code><code class="descname">ConnectRegistry</code><span class="sig-paren">(</span><em>computer_name</em>, <em>key</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-23">与另一台计算机上的预定义注册表句柄建立连接,并返回<a class="reference internal" href="#handle-object"><span>handle object</span></a></span></p><p><span class="yiyi-st" id="yiyi-24"><em>computer_name</em>是远程计算机的名称,格式为<code class="docutils literal"><span class="pre">r"\\computername"</span></code></span><span class="yiyi-st" id="yiyi-25">如果<code class="docutils literal"><span class="pre">None</span></code>,则使用本地计算机。</span></p><p><span class="yiyi-st" id="yiyi-26"><em></em>是要连接的预定义句柄。</span></p><p><span class="yiyi-st" id="yiyi-27">返回值是打开的键的句柄。</span><span class="yiyi-st" id="yiyi-28">如果函数失败,则会引发<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a>异常。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-29"><span class="versionmodified">在版本3.3中更改:</span>请参见上述<a class="reference internal" href="#exception-changed"><span>above</span></a></span></p></div></dd></dl><dl class="function"><dt id="winreg.CreateKey"><span class="yiyi-st" id="yiyi-30"> <code class="descclassname">winreg.</code><code class="descname">CreateKey</code><span class="sig-paren">(</span><em>key</em>, <em>sub_key</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-31">创建或打开指定的键,返回<a class="reference internal" href="#handle-object"><span>handle object</span></a></span></p><p><span class="yiyi-st" id="yiyi-32"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-33"><em>sub_key</em>是一个字符串,用于命名此方法打开或创建的键。</span></p><p><span class="yiyi-st" id="yiyi-34">如果<em></em>是预定义键之一,则<em>sub_key</em>可以是<code class="docutils literal"><span class="pre">None</span></code></span><span class="yiyi-st" id="yiyi-35">在这种情况下,返回的句柄是传递给函数的相同的键句柄。</span></p><p><span class="yiyi-st" id="yiyi-36">如果键已经存在,则此函数将打开现有键。</span></p><p><span class="yiyi-st" id="yiyi-37">返回值是打开的键的句柄。</span><span class="yiyi-st" id="yiyi-38">如果函数失败,则会引发<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a>异常。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-39"><span class="versionmodified">在版本3.3中更改:</span>请参见上述<a class="reference internal" href="#exception-changed"><span>above</span></a></span></p></div></dd></dl><dl class="function"><dt id="winreg.CreateKeyEx"><span class="yiyi-st" id="yiyi-40"> <code class="descclassname">winreg.</code><code class="descname">CreateKeyEx</code><span class="sig-paren">(</span><em>key</em>, <em>sub_key</em>, <em>reserved=0</em>, <em>access=KEY_WRITE</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-41">创建或打开指定的键,返回<a class="reference internal" href="#handle-object"><span>handle object</span></a></span></p><p><span class="yiyi-st" id="yiyi-42"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-43"><em>sub_key</em>是一个字符串,用于命名此方法打开或创建的键。</span></p><p><span class="yiyi-st" id="yiyi-44"><em>保留</em>是保留的整数,必须为零。</span><span class="yiyi-st" id="yiyi-45">默认值为零。</span></p><p><span class="yiyi-st" id="yiyi-46"><em>访问</em>是一个整数,指定描述密钥所需的安全访问的访问掩码。</span><span class="yiyi-st" id="yiyi-47">默认值为<a class="reference internal" href="#winreg.KEY_WRITE" title="winreg.KEY_WRITE"><code class="xref py py-const docutils literal"><span class="pre">KEY_WRITE</span></code></a></span><span class="yiyi-st" id="yiyi-48">有关其他允许的值,请参见<a class="reference internal" href="#access-rights"><span>Access Rights</span></a></span></p><p><span class="yiyi-st" id="yiyi-49">如果<em></em>是预定义键之一,则<em>sub_key</em>可以是<code class="docutils literal"><span class="pre">None</span></code></span><span class="yiyi-st" id="yiyi-50">在这种情况下,返回的句柄是传递给函数的相同的键句柄。</span></p><p><span class="yiyi-st" id="yiyi-51">如果键已经存在,则此函数将打开现有键。</span></p><p><span class="yiyi-st" id="yiyi-52">返回值是打开的键的句柄。</span><span class="yiyi-st" id="yiyi-53">如果函数失败,则会引发<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a>异常。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-54"><span class="versionmodified">版本3.2中的新功能。</span></span></p></div><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-55"><span class="versionmodified">在版本3.3中更改:</span>请参见上述<a class="reference internal" href="#exception-changed"><span>above</span></a></span></p></div></dd></dl><dl class="function"><dt id="winreg.DeleteKey"><span class="yiyi-st" id="yiyi-56"> <code class="descclassname">winreg.</code><code class="descname">DeleteKey</code><span class="sig-paren">(</span><em>key</em>, <em>sub_key</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-57">删除指定的键。</span></p><p><span class="yiyi-st" id="yiyi-58"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-59"><em>sub_key</em>是一个字符串,它必须是由<em></em>参数标识的键的子键。</span><span class="yiyi-st" id="yiyi-60">此值不能为<code class="docutils literal"><span class="pre">None</span></code>,并且键可能没有子键。</span></p><p><span class="yiyi-st" id="yiyi-61"><em>此方法无法删除带有子键的键。</em></span></p><p><span class="yiyi-st" id="yiyi-62">如果方法成功,则删除整个键(包括其所有值)。</span><span class="yiyi-st" id="yiyi-63">如果方法失败,则会引发<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a>异常。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-64"><span class="versionmodified">在版本3.3中更改:</span>请参见上述<a class="reference internal" href="#exception-changed"><span>above</span></a></span></p></div></dd></dl><dl class="function"><dt id="winreg.DeleteKeyEx"><span class="yiyi-st" id="yiyi-65"> <code class="descclassname">winreg.</code><code class="descname">DeleteKeyEx</code><span class="sig-paren">(</span><em>key</em>, <em>sub_key</em>, <em>access=KEY_WOW64_64KEY</em>, <em>reserved=0</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-66">删除指定的键。</span></p><div class="admonition note"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-67">注意</span></p><p class="last"><span class="yiyi-st" id="yiyi-68"><a class="reference internal" href="#winreg.DeleteKeyEx" title="winreg.DeleteKeyEx"><code class="xref py py-func docutils literal"><span class="pre">DeleteKeyEx()</span></code></a>函数使用RegDeleteKeyEx Windows API函数实现该函数专用于64位版本的Windows。</span><span class="yiyi-st" id="yiyi-69">请参阅<a class="reference external" href="https://msdn.microsoft.com/en-us/library/ms724847%28VS.85%29.aspx">RegDeleteKeyEx文档</a></span></p></div><p><span class="yiyi-st" id="yiyi-70"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-71"><em>sub_key</em>是一个字符串,它必须是由<em></em>参数标识的键的子键。</span><span class="yiyi-st" id="yiyi-72">此值不能为<code class="docutils literal"><span class="pre">None</span></code>,并且键可能没有子键。</span></p><p><span class="yiyi-st" id="yiyi-73"><em>保留</em>是保留的整数,必须为零。</span><span class="yiyi-st" id="yiyi-74">默认值为零。</span></p><p><span class="yiyi-st" id="yiyi-75"><em>访问</em>是一个整数,指定描述密钥所需的安全访问的访问掩码。</span><span class="yiyi-st" id="yiyi-76">默认值为<a class="reference internal" href="#winreg.KEY_WOW64_64KEY" title="winreg.KEY_WOW64_64KEY"><code class="xref py py-const docutils literal"><span class="pre">KEY_WOW64_64KEY</span></code></a></span><span class="yiyi-st" id="yiyi-77">有关其他允许的值,请参见<a class="reference internal" href="#access-rights"><span>Access Rights</span></a></span></p><p><span class="yiyi-st" id="yiyi-78"><em>此方法无法删除带有子键的键。</em></span></p><p><span class="yiyi-st" id="yiyi-79">如果方法成功,则删除整个键(包括其所有值)。</span><span class="yiyi-st" id="yiyi-80">如果方法失败,则会引发<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a>异常。</span></p><p><span class="yiyi-st" id="yiyi-81">在不受支持的Windows版本上会出现<a class="reference internal" href="exceptions.html#NotImplementedError" title="NotImplementedError"><code class="xref py py-exc docutils literal"><span class="pre">NotImplementedError</span></code></a></span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-82"><span class="versionmodified">版本3.2中的新功能。</span></span></p></div><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-83"><span class="versionmodified">在版本3.3中更改:</span>请参见上述<a class="reference internal" href="#exception-changed"><span>above</span></a></span></p></div></dd></dl><dl class="function"><dt id="winreg.DeleteValue"><span class="yiyi-st" id="yiyi-84"> <code class="descclassname">winreg.</code><code class="descname">DeleteValue</code><span class="sig-paren">(</span><em>key</em>, <em>value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-85">从注册表项中删除命名的值。</span></p><p><span class="yiyi-st" id="yiyi-86"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-87"><em>value</em>是标识要删除的值的字符串。</span></p></dd></dl><dl class="function"><dt id="winreg.EnumKey"><span class="yiyi-st" id="yiyi-88"> <code class="descclassname">winreg.</code><code class="descname">EnumKey</code><span class="sig-paren">(</span><em>key</em>, <em>index</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-89">枚举打开的注册表项的子项,返回一个字符串。</span></p><p><span class="yiyi-st" id="yiyi-90"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-91"><em>index</em>是一个整数,用于标识要检索的键的索引。</span></p><p><span class="yiyi-st" id="yiyi-92">该函数在每次被调用时检索一个子键的名称。</span><span class="yiyi-st" id="yiyi-93">它通常被重复调用,直到出现<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a>异常,表明没有更多的值可用。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-94"><span class="versionmodified">在版本3.3中更改:</span>请参见上述<a class="reference internal" href="#exception-changed"><span>above</span></a></span></p></div></dd></dl><dl class="function"><dt id="winreg.EnumValue"><span class="yiyi-st" id="yiyi-95"> <code class="descclassname">winreg.</code><code class="descname">EnumValue</code><span class="sig-paren">(</span><em>key</em>, <em>index</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-96">枚举打开的注册表项的值,返回元组。</span></p><p><span class="yiyi-st" id="yiyi-97"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-98"><em>index</em>是一个整数,用于标识要检索的值的索引。</span></p><p><span class="yiyi-st" id="yiyi-99">该函数在每次被调用时检索一个子键的名称。</span><span class="yiyi-st" id="yiyi-100">它通常被重复调用,直到出现<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a>异常,表示没有更多的值。</span></p><p><span class="yiyi-st" id="yiyi-101">结果是一个3个项目的元组</span></p><table border="1" class="docutils"><thead valign="bottom"><tr class="row-odd"><th class="head"><span class="yiyi-st" id="yiyi-102">指数</span></th><th class="head"><span class="yiyi-st" id="yiyi-103">含义</span></th></tr></thead><tbody valign="top"><tr class="row-even"><td><span class="yiyi-st" id="yiyi-104"><code class="docutils literal"><span class="pre">0</span></code></span></td><td><span class="yiyi-st" id="yiyi-105">标识值名称的字符串</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-106"><code class="docutils literal"><span class="pre">1</span></code></span></td><td><span class="yiyi-st" id="yiyi-107">保存值数据的对象,其类型取决于底层注册表类型</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-108"><code class="docutils literal"><span class="pre">2</span></code></span></td><td><span class="yiyi-st" id="yiyi-109">标识值数据类型的整数(请参阅<a class="reference internal" href="#winreg.SetValueEx" title="winreg.SetValueEx"><code class="xref py py-meth docutils literal"><span class="pre">SetValueEx()</span></code></a>的文档中的表格)</span></td></tr></tbody></table><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-110"><span class="versionmodified">在版本3.3中更改:</span>请参见上述<a class="reference internal" href="#exception-changed"><span>above</span></a></span></p></div></dd></dl><dl class="function"><dt id="winreg.ExpandEnvironmentStrings"><span class="yiyi-st" id="yiyi-111"> <code class="descclassname">winreg.</code><code class="descname">ExpandEnvironmentStrings</code><span class="sig-paren">(</span><em>str</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-112">在像<a class="reference internal" href="#winreg.REG_EXPAND_SZ" title="winreg.REG_EXPAND_SZ"><code class="xref py py-const docutils literal"><span class="pre">REG_EXPAND_SZ</span></code></a>的字符串中扩展环境变量占位符<code class="docutils literal"><span class="pre">%NAME%</span></code></span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">ExpandEnvironmentStrings</span><span class="p">(</span><span class="s1">'%windir%'</span><span class="p">)</span>
<span class="go">'C:\\Windows'</span>
</code></pre></dd></dl><dl class="function"><dt id="winreg.FlushKey"><span class="yiyi-st" id="yiyi-113"> <code class="descclassname">winreg.</code><code class="descname">FlushKey</code><span class="sig-paren">(</span><em>key</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-114">将键的所有属性写入注册表。</span></p><p><span class="yiyi-st" id="yiyi-115"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-116">没有必要调用<a class="reference internal" href="#winreg.FlushKey" title="winreg.FlushKey"><code class="xref py py-func docutils literal"><span class="pre">FlushKey()</span></code></a>来更改键。</span><span class="yiyi-st" id="yiyi-117">注册表更改由注册表使用其惰性刷新器刷新到磁盘。</span><span class="yiyi-st" id="yiyi-118">注册表更改也在系统关闭时刷新到磁盘。</span><span class="yiyi-st" id="yiyi-119"><a class="reference internal" href="#winreg.CloseKey" title="winreg.CloseKey"><code class="xref py py-func docutils literal"><span class="pre">CloseKey()</span></code></a>不同,<a class="reference internal" href="#winreg.FlushKey" title="winreg.FlushKey"><code class="xref py py-func docutils literal"><span class="pre">FlushKey()</span></code></a>方法仅在所有数据都已写入注册表时才返回。</span><span class="yiyi-st" id="yiyi-120">如果应用程序需要绝对确定注册表更改在磁盘上,则应调用<a class="reference internal" href="#winreg.FlushKey" title="winreg.FlushKey"><code class="xref py py-func docutils literal"><span class="pre">FlushKey()</span></code></a></span></p><div class="admonition note"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-121">注意</span></p><p class="last"><span class="yiyi-st" id="yiyi-122">如果你不知道是否需要<a class="reference internal" href="#winreg.FlushKey" title="winreg.FlushKey"><code class="xref py py-func docutils literal"><span class="pre">FlushKey()</span></code></a>调用,它可能不是。</span></p></div></dd></dl><dl class="function"><dt id="winreg.LoadKey"><span class="yiyi-st" id="yiyi-123"> <code class="descclassname">winreg.</code><code class="descname">LoadKey</code><span class="sig-paren">(</span><em>key</em>, <em>sub_key</em>, <em>file_name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-124">在指定的键下创建子键,并将来自指定文件的注册信息存储到该子键中。</span></p><p><span class="yiyi-st" id="yiyi-125"><em></em>是由<a class="reference internal" href="#winreg.ConnectRegistry" title="winreg.ConnectRegistry"><code class="xref py py-func docutils literal"><span class="pre">ConnectRegistry()</span></code></a>或常量<a class="reference internal" href="#winreg.HKEY_USERS" title="winreg.HKEY_USERS"><code class="xref py py-const docutils literal"><span class="pre">HKEY_USERS</span></code></a><a class="reference internal" href="#winreg.HKEY_LOCAL_MACHINE" title="winreg.HKEY_LOCAL_MACHINE"><code class="xref py py-const docutils literal"><span class="pre">HKEY_LOCAL_MACHINE</span></code></a>返回的句柄。</span></p><p><span class="yiyi-st" id="yiyi-126"><em>sub_key</em>是标识要加载的子项的字符串。</span></p><p><span class="yiyi-st" id="yiyi-127"><em>file_name</em>是要从中加载注册表数据的文件的名称。</span><span class="yiyi-st" id="yiyi-128">此文件必须使用<a class="reference internal" href="#winreg.SaveKey" title="winreg.SaveKey"><code class="xref py py-func docutils literal"><span class="pre">SaveKey()</span></code></a>函数创建。</span><span class="yiyi-st" id="yiyi-129">在文件分配表FAT文件系统下文件名可能没有扩展名。</span></p><p><span class="yiyi-st" id="yiyi-130">如果调用进程不具有<code class="xref py py-const docutils literal"><span class="pre">SE_RESTORE_PRIVILEGE</span></code>权限,则对<a class="reference internal" href="#winreg.LoadKey" title="winreg.LoadKey"><code class="xref py py-func docutils literal"><span class="pre">LoadKey()</span></code></a>的调用失败。</span><span class="yiyi-st" id="yiyi-131">请注意,权限与权限不同 - 有关详细信息,请参阅<a class="reference external" href="https://msdn.microsoft.com/en-us/library/ms724889%28v=VS.85%29.aspx">RegLoadKey文档</a></span></p><p><span class="yiyi-st" id="yiyi-132">如果<em></em>是由<a class="reference internal" href="#winreg.ConnectRegistry" title="winreg.ConnectRegistry"><code class="xref py py-func docutils literal"><span class="pre">ConnectRegistry()</span></code></a>返回的句柄,则<em>file_name</em>中指定的路径是相对于远程计算机的。</span></p></dd></dl><dl class="function"><dt id="winreg.OpenKey"><span class="yiyi-st" id="yiyi-133"> <code class="descclassname">winreg.</code><code class="descname">OpenKey</code><span class="sig-paren">(</span><em>key</em>, <em>sub_key</em>, <em>reserved=0</em>, <em>access=KEY_READ</em><span class="sig-paren">)</span></span></dt><dt id="winreg.OpenKeyEx"><span class="yiyi-st" id="yiyi-134"> <code class="descclassname">winreg.</code><code class="descname">OpenKeyEx</code><span class="sig-paren">(</span><em>key</em>, <em>sub_key</em>, <em>reserved=0</em>, <em>access=KEY_READ</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-135">打开指定的键,返回<a class="reference internal" href="#handle-object"><span>handle object</span></a></span></p><p><span class="yiyi-st" id="yiyi-136"><em>key</em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-137"><em>sub_key</em>是标识要打开的子键的字符串。</span></p><p><span class="yiyi-st" id="yiyi-138"><em>reserved</em>是保留的整数,必须为零。</span><span class="yiyi-st" id="yiyi-139">默认值为零。</span></p><p><span class="yiyi-st" id="yiyi-140"><em>access</em>是一个整数,指定描述密钥所需的安全访问的访问掩码。</span><span class="yiyi-st" id="yiyi-141">默认值为<a class="reference internal" href="#winreg.KEY_READ" title="winreg.KEY_READ"><code class="xref py py-const docutils literal"><span class="pre">KEY_READ</span></code></a></span><span class="yiyi-st" id="yiyi-142">有关其他允许的值,请参见<a class="reference internal" href="#access-rights"><span>Access Rights</span></a></span></p><p><span class="yiyi-st" id="yiyi-143">结果是指定键的新句柄。</span></p><p><span class="yiyi-st" id="yiyi-144">如果函数失败,则会引发<a class="reference internal" href="exceptions.html#OSError" title="OSError"><code class="xref py py-exc docutils literal"><span class="pre">OSError</span></code></a></span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-145"><span class="versionmodified">在版本3.2中更改:</span>允许使用命名参数。</span></p></div><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-146"><span class="versionmodified">在版本3.3中更改:</span>请参见上述<a class="reference internal" href="#exception-changed"><span>above</span></a></span></p></div></dd></dl><dl class="function"><dt id="winreg.QueryInfoKey"><span class="yiyi-st" id="yiyi-147"> <code class="descclassname">winreg.</code><code class="descname">QueryInfoKey</code><span class="sig-paren">(</span><em>key</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-148">返回有关键的信息,作为元组。</span></p><p><span class="yiyi-st" id="yiyi-149"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-150">结果是一个3个项目的元组</span></p><table border="1" class="docutils"><thead valign="bottom"><tr class="row-odd"><th class="head"><span class="yiyi-st" id="yiyi-151">指数</span></th><th class="head"><span class="yiyi-st" id="yiyi-152">含义</span></th></tr></thead><tbody valign="top"><tr class="row-even"><td><span class="yiyi-st" id="yiyi-153"><code class="docutils literal"><span class="pre">0</span></code></span></td><td><span class="yiyi-st" id="yiyi-154">一个整数,给出此键具有的子键数量。</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-155"><code class="docutils literal"><span class="pre">1</span></code></span></td><td><span class="yiyi-st" id="yiyi-156">一个整数,给出此键所具有的值的数量。</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-157"><code class="docutils literal"><span class="pre">2</span></code></span></td><td><span class="yiyi-st" id="yiyi-158">最近一次修改的时间的整数如果可用为自1601年1月1日以来的纳秒单位为100纳秒)。</span></td></tr></tbody></table></dd></dl><dl class="function"><dt id="winreg.QueryValue"><span class="yiyi-st" id="yiyi-159"> <code class="descclassname">winreg.</code><code class="descname">QueryValue</code><span class="sig-paren">(</span><em>key</em>, <em>sub_key</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-160">检索键的未命名值,作为字符串。</span></p><p><span class="yiyi-st" id="yiyi-161"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-162"><em>sub_key</em>是一个字符串,它保存与该值相关联的子项的名称。</span><span class="yiyi-st" id="yiyi-163">如果此参数<code class="docutils literal"><span class="pre">None</span></code>或为空,则函数将检索由<a class="reference internal" href="#winreg.SetValue" title="winreg.SetValue"><code class="xref py py-func docutils literal"><span class="pre">SetValue()</span></code></a>方法为由<em></em>标识的键设置的值。</span></p><p><span class="yiyi-st" id="yiyi-164">注册表中的值具有名称,类型和数据组件。</span><span class="yiyi-st" id="yiyi-165">此方法检索键的第一个值为NULL的数据。</span><span class="yiyi-st" id="yiyi-166">但底层API调用不返回类型因此如果可能请始终使用<a class="reference internal" href="#winreg.QueryValueEx" title="winreg.QueryValueEx"><code class="xref py py-func docutils literal"><span class="pre">QueryValueEx()</span></code></a></span></p></dd></dl><dl class="function"><dt id="winreg.QueryValueEx"><span class="yiyi-st" id="yiyi-167"> <code class="descclassname">winreg.</code><code class="descname">QueryValueEx</code><span class="sig-paren">(</span><em>key</em>, <em>value_name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-168">检索与打开的注册表项相关联的指定值名称的类型和数据。</span></p><p><span class="yiyi-st" id="yiyi-169"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-170"><em>value_name</em>是一个字符串,表示要查询的值。</span></p><p><span class="yiyi-st" id="yiyi-171">结果是一个2个项目的元组</span></p><table border="1" class="docutils"><thead valign="bottom"><tr class="row-odd"><th class="head"><span class="yiyi-st" id="yiyi-172">指数</span></th><th class="head"><span class="yiyi-st" id="yiyi-173">含义</span></th></tr></thead><tbody valign="top"><tr class="row-even"><td><span class="yiyi-st" id="yiyi-174"><code class="docutils literal"><span class="pre">0</span></code></span></td><td><span class="yiyi-st" id="yiyi-175">注册表项的值。</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-176"><code class="docutils literal"><span class="pre">1</span></code></span></td><td><span class="yiyi-st" id="yiyi-177">为此值提供注册表类型的整数(请参阅<a class="reference internal" href="#winreg.SetValueEx" title="winreg.SetValueEx"><code class="xref py py-meth docutils literal"><span class="pre">SetValueEx()</span></code></a>的文档中的表)</span></td></tr></tbody></table></dd></dl><dl class="function"><dt id="winreg.SaveKey"><span class="yiyi-st" id="yiyi-178"> <code class="descclassname">winreg.</code><code class="descname">SaveKey</code><span class="sig-paren">(</span><em>key</em>, <em>file_name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-179">将指定的键及其所有子键保存到指定的文件。</span></p><p><span class="yiyi-st" id="yiyi-180"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-181"><em>file_name</em>是要将注册表数据保存到的文件的名称。</span><span class="yiyi-st" id="yiyi-182">此文件不能已存在。</span><span class="yiyi-st" id="yiyi-183">如果此文件名包含扩展名,则不能通过<a class="reference internal" href="#winreg.LoadKey" title="winreg.LoadKey"><code class="xref py py-meth docutils literal"><span class="pre">LoadKey()</span></code></a>方法在文件分配表FAT文件系统上使用。</span></p><p><span class="yiyi-st" id="yiyi-184">如果<em></em>表示远程计算机上的键,则<em>file_name</em>描述的路径是相对于远程计算机的。</span><span class="yiyi-st" id="yiyi-185">此方法的调用者必须拥有<code class="xref py py-const docutils literal"><span class="pre">SeBackupPrivilege</span></code>安全权限。</span><span class="yiyi-st" id="yiyi-186">请注意,权限与权限不同 - 有关详情,请参阅<a class="reference external" href="https://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx">用户权限和权限之间的冲突文档</a></span></p><p><span class="yiyi-st" id="yiyi-187">此函数将<em>security_attributes</em>的NULL传递给API。</span></p></dd></dl><dl class="function"><dt id="winreg.SetValue"><span class="yiyi-st" id="yiyi-188"> <code class="descclassname">winreg.</code><code class="descname">SetValue</code><span class="sig-paren">(</span><em>key</em>, <em>sub_key</em>, <em>type</em>, <em>value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-189">将值与指定的键相关联。</span></p><p><span class="yiyi-st" id="yiyi-190"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-191"><em>sub_key</em>是一个字符串,用于命名与该值相关联的子项。</span></p><p><span class="yiyi-st" id="yiyi-192"><em>type</em>是一个指定数据类型的整数。</span><span class="yiyi-st" id="yiyi-193">目前,这必须是<a class="reference internal" href="#winreg.REG_SZ" title="winreg.REG_SZ"><code class="xref py py-const docutils literal"><span class="pre">REG_SZ</span></code></a>,这意味着只支持字符串。</span><span class="yiyi-st" id="yiyi-194">使用<a class="reference internal" href="#winreg.SetValueEx" title="winreg.SetValueEx"><code class="xref py py-func docutils literal"><span class="pre">SetValueEx()</span></code></a>函数支持其他数据类型。</span></p><p><span class="yiyi-st" id="yiyi-195"><em>value</em>是一个指定新值的字符串。</span></p><p><span class="yiyi-st" id="yiyi-196">如果<em>sub_key</em>参数指定的键不存在则SetValue函数将创建它。</span></p><p><span class="yiyi-st" id="yiyi-197">值长度受可用内存的限制。</span><span class="yiyi-st" id="yiyi-198">长整型值大于2048字节应存储为文件名该文件名存储在配置注册表中。</span><span class="yiyi-st" id="yiyi-199">这有助于注册表执行效率。</span></p><p><span class="yiyi-st" id="yiyi-200"><em></em>参数标识的键必须已通过<a class="reference internal" href="#winreg.KEY_SET_VALUE" title="winreg.KEY_SET_VALUE"><code class="xref py py-const docutils literal"><span class="pre">KEY_SET_VALUE</span></code></a>访问打开。</span></p></dd></dl><dl class="function"><dt id="winreg.SetValueEx"><span class="yiyi-st" id="yiyi-201"> <code class="descclassname">winreg.</code><code class="descname">SetValueEx</code><span class="sig-paren">(</span><em>key</em>, <em>value_name</em>, <em>reserved</em>, <em>type</em>, <em>value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-202">将数据存储在打开的注册表项的值字段中。</span></p><p><span class="yiyi-st" id="yiyi-203"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-204"><em>value_name</em>是一个字符串,用于命名与该值相关联的子项。</span></p><p><span class="yiyi-st" id="yiyi-205"><em>保留</em>可以是任何 - 零始终传递到API。</span></p><p><span class="yiyi-st" id="yiyi-206"><em>type</em>是一个指定数据类型的整数。</span><span class="yiyi-st" id="yiyi-207">有关可用类型,请参见<a class="reference internal" href="#value-types"><span>Value Types</span></a></span></p><p><span class="yiyi-st" id="yiyi-208"><em>value</em>是一个指定新值的字符串。</span></p><p><span class="yiyi-st" id="yiyi-209">此方法还可以为指定的键设置附加值和类型信息。</span><span class="yiyi-st" id="yiyi-210">由键参数标识的键必须已通过<a class="reference internal" href="#winreg.KEY_SET_VALUE" title="winreg.KEY_SET_VALUE"><code class="xref py py-const docutils literal"><span class="pre">KEY_SET_VALUE</span></code></a>访问打开。</span></p><p><span class="yiyi-st" id="yiyi-211">要打开密钥,请使用<a class="reference internal" href="#winreg.CreateKey" title="winreg.CreateKey"><code class="xref py py-func docutils literal"><span class="pre">CreateKey()</span></code></a><a class="reference internal" href="#winreg.OpenKey" title="winreg.OpenKey"><code class="xref py py-func docutils literal"><span class="pre">OpenKey()</span></code></a>方法。</span></p><p><span class="yiyi-st" id="yiyi-212">值长度受可用内存的限制。</span><span class="yiyi-st" id="yiyi-213">长整型值大于2048字节应存储为文件名该文件名存储在配置注册表中。</span><span class="yiyi-st" id="yiyi-214">这有助于注册表执行效率。</span></p></dd></dl><dl class="function"><dt id="winreg.DisableReflectionKey"><span class="yiyi-st" id="yiyi-215"> <code class="descclassname">winreg.</code><code class="descname">DisableReflectionKey</code><span class="sig-paren">(</span><em>key</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-216">对运行在64位操作系统上的32位进程禁用注册表反射。</span></p><p><span class="yiyi-st" id="yiyi-217"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-218">如果在32位操作系统上执行通常将引发<a class="reference internal" href="constants.html#NotImplemented" title="NotImplemented"><code class="xref py py-exc docutils literal"><span class="pre">NotImplemented</span></code></a></span></p><p><span class="yiyi-st" id="yiyi-219">如果键不在反射列表上,则函数将成功但不起作用。</span><span class="yiyi-st" id="yiyi-220">禁用键的反射不会影响任何子键的反映。</span></p></dd></dl><dl class="function"><dt id="winreg.EnableReflectionKey"><span class="yiyi-st" id="yiyi-221"> <code class="descclassname">winreg.</code><code class="descname">EnableReflectionKey</code><span class="sig-paren">(</span><em>key</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-222">恢复指定的禁用键的注册表反射。</span></p><p><span class="yiyi-st" id="yiyi-223"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-224">如果在32位操作系统上执行通常将引发<a class="reference internal" href="constants.html#NotImplemented" title="NotImplemented"><code class="xref py py-exc docutils literal"><span class="pre">NotImplemented</span></code></a></span></p><p><span class="yiyi-st" id="yiyi-225">恢复键的反射不会影响任何子键的反映。</span></p></dd></dl><dl class="function"><dt id="winreg.QueryReflectionKey"><span class="yiyi-st" id="yiyi-226"> <code class="descclassname">winreg.</code><code class="descname">QueryReflectionKey</code><span class="sig-paren">(</span><em>key</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-227">确定指定键的反射状态。</span></p><p><span class="yiyi-st" id="yiyi-228"><em></em>是已打开的键,或者是预定义的<a class="reference internal" href="#hkey-constants"><span>HKEY_* constants</span></a>之一。</span></p><p><span class="yiyi-st" id="yiyi-229">如果禁用反射,则返回<code class="docutils literal"><span class="pre">True</span></code></span></p><p><span class="yiyi-st" id="yiyi-230">如果在32位操作系统上执行通常将引发<a class="reference internal" href="constants.html#NotImplemented" title="NotImplemented"><code class="xref py py-exc docutils literal"><span class="pre">NotImplemented</span></code></a></span></p></dd></dl></div><div class="section" id="constants"><h2><span class="yiyi-st" id="yiyi-231">34.3.2. </span><span class="yiyi-st" id="yiyi-232">Constants</span></h2><p><span class="yiyi-st" id="yiyi-233">定义了许多<code class="xref py py-mod docutils literal"><span class="pre">_winreg</span></code>函数中使用的常量。</span></p><div class="section" id="hkey-constants"><h3><span class="yiyi-st" id="yiyi-234">34.3.2.1. </span><span class="yiyi-st" id="yiyi-235">HKEY_* Constants</span></h3><dl class="data"><dt id="winreg.HKEY_CLASSES_ROOT"><span class="yiyi-st" id="yiyi-236"> <code class="descclassname">winreg.</code><code class="descname">HKEY_CLASSES_ROOT</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-237">从属于此键的注册表项定义文档的类型(或类)以及与这些类型相关联的属性。</span><span class="yiyi-st" id="yiyi-238">Shell和COM应用程序使用存储在此键下的信息。</span></p></dd></dl><dl class="data"><dt id="winreg.HKEY_CURRENT_USER"><span class="yiyi-st" id="yiyi-239"> <code class="descclassname">winreg.</code><code class="descname">HKEY_CURRENT_USER</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-240">从属于此键的注册表项定义当前用户的首选项。</span><span class="yiyi-st" id="yiyi-241">这些首选项包括环境变量的设置,有关程序组的数据,颜色,打印机,网络连接和应用程序首选项。</span></p></dd></dl><dl class="data"><dt id="winreg.HKEY_LOCAL_MACHINE"><span class="yiyi-st" id="yiyi-242"> <code class="descclassname">winreg.</code><code class="descname">HKEY_LOCAL_MACHINE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-243">此键下属的注册表项定义计算机的物理状态,包括有关总线类型,系统内存和已安装的硬件和软件的数据。</span></p></dd></dl><dl class="data"><dt id="winreg.HKEY_USERS"><span class="yiyi-st" id="yiyi-244"> <code class="descclassname">winreg.</code><code class="descname">HKEY_USERS</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-245">从属于此键的注册表项定义本地计算机上新用户的默认用户配置和当前用户的用户配置。</span></p></dd></dl><dl class="data"><dt id="winreg.HKEY_PERFORMANCE_DATA"><span class="yiyi-st" id="yiyi-246"> <code class="descclassname">winreg.</code><code class="descname">HKEY_PERFORMANCE_DATA</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-247">此密钥下的注册表项允许您访问性能数据。</span><span class="yiyi-st" id="yiyi-248">数据实际上不是存储在注册表中;注册表函数使系统从其源收集数据。</span></p></dd></dl><dl class="data"><dt id="winreg.HKEY_CURRENT_CONFIG"><span class="yiyi-st" id="yiyi-249"> <code class="descclassname">winreg.</code><code class="descname">HKEY_CURRENT_CONFIG</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-250">包含有关本地计算机系统的当前硬件配置文件的信息。</span></p></dd></dl><dl class="data"><dt id="winreg.HKEY_DYN_DATA"><span class="yiyi-st" id="yiyi-251"> <code class="descclassname">winreg.</code><code class="descname">HKEY_DYN_DATA</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-252">此键在98之后的Windows版本中不使用。</span></p></dd></dl></div><div class="section" id="access-rights"><h3><span class="yiyi-st" id="yiyi-253">34.3.2.2. </span><span class="yiyi-st" id="yiyi-254">Access Rights</span></h3><p><span class="yiyi-st" id="yiyi-255">有关详细信息,请参阅<a class="reference external" href="https://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx">注册表项安全性和访问权限</a></span></p><dl class="data"><dt id="winreg.KEY_ALL_ACCESS"><span class="yiyi-st" id="yiyi-256"> <code class="descclassname">winreg.</code><code class="descname">KEY_ALL_ACCESS</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-257">合并STANDARD_RIGHTS_REQUIRED<a class="reference internal" href="#winreg.KEY_QUERY_VALUE" title="winreg.KEY_QUERY_VALUE"><code class="xref py py-const docutils literal"><span class="pre">KEY_QUERY_VALUE</span></code></a><a class="reference internal" href="#winreg.KEY_SET_VALUE" title="winreg.KEY_SET_VALUE"><code class="xref py py-const docutils literal"><span class="pre">KEY_SET_VALUE</span></code></a><a class="reference internal" href="#winreg.KEY_CREATE_SUB_KEY" title="winreg.KEY_CREATE_SUB_KEY"><code class="xref py py-const docutils literal"><span class="pre">KEY_CREATE_SUB_KEY</span></code></a><a class="reference internal" href="#winreg.KEY_ENUMERATE_SUB_KEYS" title="winreg.KEY_ENUMERATE_SUB_KEYS"><code class="xref py py-const docutils literal"><span class="pre">KEY_ENUMERATE_SUB_KEYS</span></code></a><a class="reference internal" href="#winreg.KEY_NOTIFY" title="winreg.KEY_NOTIFY"><code class="xref py py-const docutils literal"><span class="pre">KEY_NOTIFY</span></code></a> <a class="reference internal" href="#winreg.KEY_CREATE_LINK" title="winreg.KEY_CREATE_LINK"><code class="xref py py-const docutils literal"><span class="pre">KEY_CREATE_LINK</span></code></a>访问权限。</span></p></dd></dl><dl class="data"><dt id="winreg.KEY_WRITE"><span class="yiyi-st" id="yiyi-258"> <code class="descclassname">winreg.</code><code class="descname">KEY_WRITE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-259">合并STANDARD_RIGHTS_WRITE<a class="reference internal" href="#winreg.KEY_SET_VALUE" title="winreg.KEY_SET_VALUE"><code class="xref py py-const docutils literal"><span class="pre">KEY_SET_VALUE</span></code></a><a class="reference internal" href="#winreg.KEY_CREATE_SUB_KEY" title="winreg.KEY_CREATE_SUB_KEY"><code class="xref py py-const docutils literal"><span class="pre">KEY_CREATE_SUB_KEY</span></code></a>访问权限。</span></p></dd></dl><dl class="data"><dt id="winreg.KEY_READ"><span class="yiyi-st" id="yiyi-260"> <code class="descclassname">winreg.</code><code class="descname">KEY_READ</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-261">合并STANDARD_RIGHTS_READ<a class="reference internal" href="#winreg.KEY_QUERY_VALUE" title="winreg.KEY_QUERY_VALUE"><code class="xref py py-const docutils literal"><span class="pre">KEY_QUERY_VALUE</span></code></a><a class="reference internal" href="#winreg.KEY_ENUMERATE_SUB_KEYS" title="winreg.KEY_ENUMERATE_SUB_KEYS"><code class="xref py py-const docutils literal"><span class="pre">KEY_ENUMERATE_SUB_KEYS</span></code></a><a class="reference internal" href="#winreg.KEY_NOTIFY" title="winreg.KEY_NOTIFY"><code class="xref py py-const docutils literal"><span class="pre">KEY_NOTIFY</span></code></a>值。</span></p></dd></dl><dl class="data"><dt id="winreg.KEY_EXECUTE"><span class="yiyi-st" id="yiyi-262"> <code class="descclassname">winreg.</code><code class="descname">KEY_EXECUTE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-263">等效于<a class="reference internal" href="#winreg.KEY_READ" title="winreg.KEY_READ"><code class="xref py py-const docutils literal"><span class="pre">KEY_READ</span></code></a></span></p></dd></dl><dl class="data"><dt id="winreg.KEY_QUERY_VALUE"><span class="yiyi-st" id="yiyi-264"> <code class="descclassname">winreg.</code><code class="descname">KEY_QUERY_VALUE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-265">需要查询注册表项的值。</span></p></dd></dl><dl class="data"><dt id="winreg.KEY_SET_VALUE"><span class="yiyi-st" id="yiyi-266"> <code class="descclassname">winreg.</code><code class="descname">KEY_SET_VALUE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-267">需要创建,删除或设置注册表值。</span></p></dd></dl><dl class="data"><dt id="winreg.KEY_CREATE_SUB_KEY"><span class="yiyi-st" id="yiyi-268"> <code class="descclassname">winreg.</code><code class="descname">KEY_CREATE_SUB_KEY</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-269">需要创建注册表项的子项。</span></p></dd></dl><dl class="data"><dt id="winreg.KEY_ENUMERATE_SUB_KEYS"><span class="yiyi-st" id="yiyi-270"> <code class="descclassname">winreg.</code><code class="descname">KEY_ENUMERATE_SUB_KEYS</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-271">必需枚举注册表项的子项。</span></p></dd></dl><dl class="data"><dt id="winreg.KEY_NOTIFY"><span class="yiyi-st" id="yiyi-272"> <code class="descclassname">winreg.</code><code class="descname">KEY_NOTIFY</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-273">需要为注册表项请求更改通知,或者为注册表项的子项请求更改通知。</span></p></dd></dl><dl class="data"><dt id="winreg.KEY_CREATE_LINK"><span class="yiyi-st" id="yiyi-274"> <code class="descclassname">winreg.</code><code class="descname">KEY_CREATE_LINK</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-275">保留供系统使用。</span></p></dd></dl><div class="section" id="bit-specific"><h4><span class="yiyi-st" id="yiyi-276">34.3.2.2.1. </span><span class="yiyi-st" id="yiyi-277">64位特定</span></h4><p><span class="yiyi-st" id="yiyi-278">有关详细信息,请参阅<a class="reference external" href="https://msdn.microsoft.com/en-us/library/aa384129(v=VS.85).aspx">访问备用注册表视图</a></span></p><dl class="data"><dt id="winreg.KEY_WOW64_64KEY"><span class="yiyi-st" id="yiyi-279"> <code class="descclassname">winreg.</code><code class="descname">KEY_WOW64_64KEY</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-280">表示64位Windows上的应用程序应在64位注册表视图上运行。</span></p></dd></dl><dl class="data"><dt id="winreg.KEY_WOW64_32KEY"><span class="yiyi-st" id="yiyi-281"> <code class="descclassname">winreg.</code><code class="descname">KEY_WOW64_32KEY</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-282">表示64位Windows上的应用程序应在32位注册表视图上运行。</span></p></dd></dl></div></div><div class="section" id="value-types"><h3><span class="yiyi-st" id="yiyi-283">34.3.2.3. </span><span class="yiyi-st" id="yiyi-284">Value Types</span></h3><p><span class="yiyi-st" id="yiyi-285">有关详细信息,请参阅<a class="reference external" href="https://msdn.microsoft.com/en-us/library/ms724884%28v=VS.85%29.aspx">注册表值类型</a></span></p><dl class="data"><dt id="winreg.REG_BINARY"><span class="yiyi-st" id="yiyi-286"> <code class="descclassname">winreg.</code><code class="descname">REG_BINARY</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-287">任何形式的二进制数据。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_DWORD"><span class="yiyi-st" id="yiyi-288"> <code class="descclassname">winreg.</code><code class="descname">REG_DWORD</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-289">32位数。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_DWORD_LITTLE_ENDIAN"><span class="yiyi-st" id="yiyi-290"> <code class="descclassname">winreg.</code><code class="descname">REG_DWORD_LITTLE_ENDIAN</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-291">小端格式的32位数字。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_DWORD_BIG_ENDIAN"><span class="yiyi-st" id="yiyi-292"> <code class="descclassname">winreg.</code><code class="descname">REG_DWORD_BIG_ENDIAN</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-293">以big-endian格式的32位数字。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_EXPAND_SZ"><span class="yiyi-st" id="yiyi-294"> <code class="descclassname">winreg.</code><code class="descname">REG_EXPAND_SZ</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-295">Null终止的字符串包含对环境变量的引用<code class="docutils literal"><span class="pre">%PATH%</span></code>)。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_LINK"><span class="yiyi-st" id="yiyi-296"> <code class="descclassname">winreg.</code><code class="descname">REG_LINK</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-297">Unicode符号链接。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_MULTI_SZ"><span class="yiyi-st" id="yiyi-298"> <code class="descclassname">winreg.</code><code class="descname">REG_MULTI_SZ</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-299">以NULL结束的字符串序列以两个空字符结束。</span><span class="yiyi-st" id="yiyi-300">Python会自动处理此终止。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_NONE"><span class="yiyi-st" id="yiyi-301"> <code class="descclassname">winreg.</code><code class="descname">REG_NONE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-302">没有定义值类型。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_RESOURCE_LIST"><span class="yiyi-st" id="yiyi-303"> <code class="descclassname">winreg.</code><code class="descname">REG_RESOURCE_LIST</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-304">设备驱动程序资源列表。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_FULL_RESOURCE_DESCRIPTOR"><span class="yiyi-st" id="yiyi-305"> <code class="descclassname">winreg.</code><code class="descname">REG_FULL_RESOURCE_DESCRIPTOR</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-306">硬件设置。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_RESOURCE_REQUIREMENTS_LIST"><span class="yiyi-st" id="yiyi-307"> <code class="descclassname">winreg.</code><code class="descname">REG_RESOURCE_REQUIREMENTS_LIST</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-308">硬件资源列表。</span></p></dd></dl><dl class="data"><dt id="winreg.REG_SZ"><span class="yiyi-st" id="yiyi-309"> <code class="descclassname">winreg.</code><code class="descname">REG_SZ</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-310">以null结尾的字符串。</span></p></dd></dl></div></div><div class="section" id="registry-handle-objects"><h2><span class="yiyi-st" id="yiyi-311">34.3.3. </span><span class="yiyi-st" id="yiyi-312">Registry Handle Objects</span></h2><p><span class="yiyi-st" id="yiyi-313">此对象包装一个Windows HKEY对象当对象被销毁时自动关闭它。</span><span class="yiyi-st" id="yiyi-314">为了保证清除,可以调用对象上的<a class="reference internal" href="#winreg.PyHKEY.Close" title="winreg.PyHKEY.Close"><code class="xref py py-meth docutils literal"><span class="pre">Close()</span></code></a>方法或<a class="reference internal" href="#winreg.CloseKey" title="winreg.CloseKey"><code class="xref py py-func docutils literal"><span class="pre">CloseKey()</span></code></a>函数。</span></p><p><span class="yiyi-st" id="yiyi-315">此模块中的所有注册表函数都返回这些对象之一。</span></p><p><span class="yiyi-st" id="yiyi-316">在这个模块中接受句柄对象的所有注册表函数也接受一个整数,但鼓励使用句柄对象。</span></p><p><span class="yiyi-st" id="yiyi-317">句柄对象为<a class="reference internal" href="../reference/datamodel.html#object.__bool__" title="object.__bool__"><code class="xref py py-meth docutils literal"><span class="pre">__bool__()</span></code></a>提供语义</span></p><pre><code class="language-python"><span></span><span class="k">if</span> <span class="n">handle</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Yes"</span><span class="p">)</span>
</code></pre><p><span class="yiyi-st" id="yiyi-318">将打印<code class="docutils literal"><span class="pre">Yes</span></code>如果句柄当前有效(尚未关闭或分离)。</span></p><p><span class="yiyi-st" id="yiyi-319">该对象还支持比较语义因此如果句柄对象都引用相同的底层Windows句柄值则它们将比较true。</span></p><p><span class="yiyi-st" id="yiyi-320">句柄对象可以转换为整数(例如,使用内建<a class="reference internal" href="functions.html#int" title="int"><code class="xref py py-func docutils literal"><span class="pre">int()</span></code></a>函数在这种情况下返回基本的Windows句柄值。</span><span class="yiyi-st" id="yiyi-321">您还可以使用<a class="reference internal" href="#winreg.PyHKEY.Detach" title="winreg.PyHKEY.Detach"><code class="xref py py-meth docutils literal"><span class="pre">Detach()</span></code></a>方法返回整数句柄并且还从句柄对象中断开Windows句柄。</span></p><dl class="method"><dt id="winreg.PyHKEY.Close"><span class="yiyi-st" id="yiyi-322"> <code class="descclassname">PyHKEY.</code><code class="descname">Close</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-323">关闭基础Windows句柄。</span></p><p><span class="yiyi-st" id="yiyi-324">如果句柄已经关闭,则不会产生错误。</span></p></dd></dl><dl class="method"><dt id="winreg.PyHKEY.Detach"><span class="yiyi-st" id="yiyi-325"> <code class="descclassname">PyHKEY.</code><code class="descname">Detach</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-326">从句柄对象分离Windows句柄。</span></p><p><span class="yiyi-st" id="yiyi-327">结果是一个整数,它在分离之前保存句柄的值。</span><span class="yiyi-st" id="yiyi-328">如果句柄已经被分离或关闭,这将返回零。</span></p><p><span class="yiyi-st" id="yiyi-329">调用此函数后,句柄有效无效,但句柄未关闭。</span><span class="yiyi-st" id="yiyi-330">当您需要底层的Win32句柄存在超过句柄对象的生命周期时您将调用此函数。</span></p></dd></dl><dl class="method"><dt id="winreg.PyHKEY.__enter__"><span class="yiyi-st" id="yiyi-331"> <code class="descclassname">PyHKEY.</code><code class="descname">__enter__</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dt id="winreg.PyHKEY.__exit__"><span class="yiyi-st" id="yiyi-332"> <code class="descclassname">PyHKEY.</code><code class="descname">__exit__</code><span class="sig-paren">(</span><em>*exc_info</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-333">HKEY对象实现<a class="reference internal" href="../reference/datamodel.html#object.__enter__" title="object.__enter__"><code class="xref py py-meth docutils literal"><span class="pre">__enter__()</span></code></a><a class="reference internal" href="../reference/datamodel.html#object.__exit__" title="object.__exit__"><code class="xref py py-meth docutils literal"><span class="pre">__exit__()</span></code></a>,从而支持<a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal"><span class="pre">with</span></code></a>语句的上下文协议:</span></p><pre><code class="language-python"><span></span><span class="k">with</span> <span class="n">OpenKey</span><span class="p">(</span><span class="n">HKEY_LOCAL_MACHINE</span><span class="p">,</span> <span class="s2">"foo"</span><span class="p">)</span> <span class="k">as</span> <span class="n">key</span><span class="p">:</span>
<span class="o">...</span> <span class="c1"># work with key</span>
</code></pre><p><span class="yiyi-st" id="yiyi-334">will automatically close <em>key</em> when control leaves the <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal"><span class="pre">with</span></code></a> block.</span></p></dd></dl></div></div></div>