tieregistry.html
来自「perl教程」· HTML 代码 · 共 1,015 行 · 第 1/5 页
HTML
1,015 行
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>Win32::TieRegistry - Powerful and easy ways to manipulate a registry [on Win32 for now].</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>
<body>
<script>writelinks('__top__',2);</script>
<h1><a>Win32::TieRegistry - Powerful and easy ways to manipulate a registry [on Win32 for now].</a></h1>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
<li><a href="#examples">EXAMPLES</a></li>
<li><a href="#description">DESCRIPTION</a></li>
<ul>
<li><a href="#the_registry">The Registry</a></li>
<li><a href="#tied_hashes_documentation">Tied Hashes Documentation</a></li>
<ul>
<li><a href="#examples">Examples</a></li>
<li><a href="#deleting_items">Deleting items</a></li>
<li><a href="#storing_items">Storing items</a></li>
<li><a href="#more_examples">More examples</a></li>
</ul>
<li><a href="#objects_documentation">Objects Documentation</a></li>
<li><a href="#exports__use_and_import___">Exports [<a href="../../lib/Pod/perlfunc.html#item_use"><code>use</code></a> and <a href="../../lib/Pod/perlfunc.html#item_import"><code>import()</code></a>]</a></li>
<ul>
<li><a href="#specifying_constants_in_your_perl_code">Specifying constants in your Perl code</a></li>
</ul>
</ul>
<li><a href="#summary">SUMMARY</a></li>
<ul>
<li><a href="#objects_summary">Objects Summary</a></li>
<ul>
<li><a href="#other_useful_methods">Other Useful Methods</a></li>
</ul>
<li><a href="#tied_hashes_summary">Tied Hashes Summary</a></li>
<ul>
<li><a href="#opening_keys">Opening keys</a></li>
<li><a href="#reading_values">Reading values</a></li>
<li><a href="#setting_values">Setting values</a></li>
<li><a href="#adding_keys">Adding keys</a></li>
<li><a href="#listing_all_subkeys_and_values">Listing all subkeys and values</a></li>
<li><a href="#deleting_values_or_keys_with_no_subkeys">Deleting values or keys with no subkeys</a></li>
<li><a href="#closing_keys">Closing keys</a></li>
</ul>
<li><a href="#tie__registry">Tie::Registry</a></li>
</ul>
<li><a href="#author">AUTHOR</a></li>
<li><a href="#see_also">SEE ALSO</a></li>
<li><a href="#bugs">BUGS</a></li>
<li><a href="#future_directions">FUTURE DIRECTIONS</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Win32::TieRegistry - Powerful and easy ways to manipulate a registry
[on Win32 for now].</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
<span class="keyword">use</span> <span class="variable">Win32::TieRegistry</span> <span class="number">0</span><span class="operator">.</span><span class="number">20</span> <span class="operator">(</span> <span class="string">UseOptionName</span><span class="operator">=></span><span class="variable">UseOptionValue</span><span class="operator">[</span><span class="operator">,...</span><span class="operator">]</span> <span class="operator">);</span>
</pre>
<pre>
<span class="variable">$Registry</span><span class="operator">-></span><span class="variable">SomeMethodCall</span><span class="operator">(</span><span class="variable">arg1</span><span class="operator">,...);</span>
</pre>
<pre>
<span class="variable">$subKey</span><span class="operator">=</span> <span class="variable">$Registry</span><span class="operator">-></span><span class="operator">{</span><span class="string">"Key\\SubKey\\"</span><span class="operator">}</span><span class="operator">;</span>
<span class="variable">$valueData</span><span class="operator">=</span> <span class="variable">$Registry</span><span class="operator">-></span><span class="operator">{</span><span class="string">"Key\\SubKey\\\\ValueName"</span><span class="operator">}</span><span class="operator">;</span>
<span class="variable">$Registry</span><span class="operator">-></span><span class="operator">{</span><span class="string">"Key\\SubKey\\"</span><span class="operator">}</span><span class="operator">=</span> <span class="operator">{</span> <span class="string">"NewSubKey"</span> <span class="operator">=></span> <span class="operator">{</span><span class="operator">...</span><span class="operator">}</span> <span class="operator">}</span><span class="operator">;</span>
<span class="variable">$Registry</span><span class="operator">-></span><span class="operator">{</span><span class="string">"Key\\SubKey\\\\ValueName"</span><span class="operator">}</span><span class="operator">=</span> <span class="string">"NewValueData"</span><span class="operator">;</span>
<span class="variable">$Registry</span><span class="operator">-></span><span class="operator">{</span><span class="string">"\\ValueName"</span><span class="operator">}</span><span class="operator">=</span> <span class="operator">[</span> <span class="keyword">pack</span><span class="operator">(</span><span class="string">"fmt"</span><span class="operator">,</span><span class="variable">$data</span><span class="operator">),</span> <span class="variable">REG_DATATYPE</span> <span class="operator">]</span><span class="operator">;</span>
</pre>
<p>
</p>
<hr />
<h1><a name="examples">EXAMPLES</a></h1>
<pre>
<span class="keyword">use</span> <span class="variable">Win32::TieRegistry</span><span class="operator">(</span> <span class="string">Delimiter</span><span class="operator">=></span><span class="string">"#"</span><span class="operator">,</span> <span class="string">ArrayValues</span><span class="operator">=></span><span class="number">0</span> <span class="operator">);</span>
<span class="variable">$pound</span><span class="operator">=</span> <span class="variable">$Registry</span><span class="operator">-></span><span class="variable">Delimiter</span><span class="operator">(</span><span class="string">"/"</span><span class="operator">);</span>
<span class="variable">$diskKey</span><span class="operator">=</span> <span class="variable">$Registry</span><span class="operator">-></span><span class="operator">{</span><span class="string">"LMachine/System/Disk/"</span><span class="operator">}</span>
<span class="keyword">or</span> <span class="keyword">die</span> <span class="string">"Can't read LMachine/System/Disk key: $^E\n"</span><span class="operator">;</span>
<span class="variable">$data</span><span class="operator">=</span> <span class="variable">$key</span><span class="operator">-></span><span class="operator">{</span><span class="string">"/Information"</span><span class="operator">}</span>
<span class="keyword">or</span> <span class="keyword">die</span> <span class="string">"Can't read LMachine/System/Disk//Information value: $^E\n"</span><span class="operator">;</span>
<span class="variable">$remoteKey</span><span class="operator">=</span> <span class="variable">$Registry</span><span class="operator">-></span><span class="operator">{</span><span class="string">"//ServerA/LMachine/System/"</span><span class="operator">}</span>
<span class="keyword">or</span> <span class="keyword">die</span> <span class="string">"Can't read //ServerA/LMachine/System/ key: $^E\n"</span><span class="operator">;</span>
<span class="variable">$remoteData</span><span class="operator">=</span> <span class="variable">$remoteKey</span><span class="operator">-></span><span class="operator">{</span><span class="string">"Disk//Information"</span><span class="operator">}</span>
<span class="keyword">or</span> <span class="keyword">die</span> <span class="string">"Can't read ServerA's System/Disk//Information value: $^E\n"</span><span class="operator">;</span>
<span class="keyword">foreach</span> <span class="variable">$entry</span> <span class="operator">(</span> <span class="keyword">keys</span><span class="operator">(</span><span class="variable">%$diskKey</span><span class="operator">)</span> <span class="operator">)</span> <span class="operator">{</span>
<span class="operator">...</span>
<span class="operator">}</span>
<span class="keyword">foreach</span> <span class="variable">$subKey</span> <span class="operator">(</span> <span class="variable">$diskKey</span><span class="operator">-></span><span class="variable">SubKeyNames</span> <span class="operator">)</span> <span class="operator">{</span>
<span class="operator">...</span>
<span class="operator">}</span>
<span class="variable">$diskKey</span><span class="operator">-></span><span class="variable">AllowSave</span><span class="operator">(</span> <span class="number">1</span> <span class="operator">);</span>
<span class="variable">$diskKey</span><span class="operator">-></span><span class="variable">RegSaveKey</span><span class="operator">(</span> <span class="string">"C:/TEMP/DiskReg"</span><span class="operator">,</span> <span class="operator">[]</span> <span class="operator">);</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>The <em>Win32::TieRegistry</em> module lets you manipulate the Registry
via objects [as in "object oriented"] or via tied hashes. But
you will probably mostly use a combination reference, that is, a
reference to a tied hash that has also been made an object so that
you can mix both access methods [as shown above].</p>
<p>If you did not get this module as part of <em>libwin32</em>, you might
want to get a recent version of <em>libwin32</em> from CPAN which should
include this module and the <em>Win32API::Registry</em> module that it
uses.</p>
<p>Skip to the <em>SUMMARY</em> section if you just want to dive in and start
using the Registry from Perl.</p>
<p>Accessing and manipulating the registry is extremely simple using
<em>Win32::TieRegistry</em>. A single, simple expression can return
you almost any bit of information stored in the Registry.
<em>Win32::TieRegistry</em> also gives you full access to the "raw"
underlying API calls so that you can do anything with the Registry
in Perl that you could do in C. But the "simple" interface has
been carefully designed to handle almost all operations itself
without imposing arbitrary limits while providing sensible
defaults so you can list only the parameters you care about.</p>
<p>But first, an overview of the Registry itself.</p>
<p>
</p>
<h2><a name="the_registry">The Registry</a></h2>
<p>The Registry is a forest: a collection of several tree structures.
The root of each tree is a key. These root keys are identified by
predefined constants whose names start with "HKEY_". Although all
keys have a few attributes associated with each [a class, a time
stamp, and security information], the most important aspect of keys
is that each can contain subkeys and can contain values.</p>
<p>Each subkey has a name: a string which cannot be blank and cannot
contain the delimiter character [backslash: <code>'\\'</code>] nor nul
[<code>'\0'</code>]. Each subkey is also a key and so can contain subkeys
and values [and has a class, time stamp, and security information].</p>
<p>Each value has a name: a string which &can; be blank and &can;
contain the delimiter character [backslash: <code>'\\'</code>] and any
character except for null, <code>'\0'</code>. Each value also has data
associated with it. Each value's data is a contiguous chunk of
bytes, which is exactly what a Perl string value is so Perl
strings will usually be used to represent value data.</p>
<p>Each value also has a data type which says how to interpret the
value data. The primary data types are:</p>
<dl>
<dt><strong><a name="item_reg_sz">REG_SZ</a></strong>
<dd>
<p>A null-terminated string.</p>
</dd>
</li>
<dt><strong><a name="item_reg_expand_sz">REG_EXPAND_SZ</a></strong>
<dd>
<p>A null-terminated string which contains substrings consisting of a
percent sign [<code>'%'</code>], an environment variable name, then a percent
sign, that should be replaced with the value associate with that
environment variable. The system does <em>not</em> automatically do this
substitution.</p>
</dd>
</li>
<dt><strong><a name="item_reg_binary">REG_BINARY</a></strong>
<dd>
<p>Some arbitrary binary value. You can think of these as being
"packed" into a string.</p>
</dd>
<dd>
<p>If your system has the <em>SetDualVar</em> module installed,
the <a href="#item_dualbinvals"><code>DualBinVals()</code></a> option wasn't turned off, and you
fetch a <a href="#item_reg_binary"><code>REG_BINARY</code></a> value of 4 bytes or fewer, then
you can use the returned value in a numeric context to
get at the "unpacked" numeric value. See <a href="#item_getvalue"><code>GetValue()</code></a>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?