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">=&gt;</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">-&gt;</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">-&gt;</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">-&gt;</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">-&gt;</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">=&gt;</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">-&gt;</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">-&gt;</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">=&gt;</span><span class="string">"#"</span><span class="operator">,</span> <span class="string">ArrayValues</span><span class="operator">=&gt;</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">-&gt;</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">-&gt;</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">-&gt;</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">-&gt;</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">-&gt;</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">-&gt;</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">-&gt;</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">-&gt;</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 &quot;object oriented&quot;] 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 &quot;raw&quot;
underlying API calls so that you can do anything with the Registry
in Perl that you could do in C.  But the &quot;simple&quot; 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 &quot;HKEY_&quot;.  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
&quot;packed&quot; 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 &quot;unpacked&quot; numeric value.  See <a href="#item_getvalue"><code>GetValue()</code></a>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?