Merge pull request #1006 from joelmartinez/msdoc-import
[mono.git] / mcs / class / corlib / Documentation / en / Microsoft.Win32 / RegistryKey.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <Type Name="RegistryKey" FullName="Microsoft.Win32.RegistryKey">
3   <TypeSignature Language="C#" Value="public sealed class RegistryKey : MarshalByRefObject, IDisposable" />
4   <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed RegistryKey extends System.MarshalByRefObject implements class System.IDisposable" />
5   <AssemblyInfo>
6     <AssemblyName>mscorlib</AssemblyName>
7     <AssemblyVersion>1.0.5000.0</AssemblyVersion>
8     <AssemblyVersion>2.0.0.0</AssemblyVersion>
9     <AssemblyVersion>4.0.0.0</AssemblyVersion>
10   </AssemblyInfo>
11   <Base>
12     <BaseTypeName>System.MarshalByRefObject</BaseTypeName>
13   </Base>
14   <Interfaces>
15     <Interface>
16       <InterfaceName>System.IDisposable</InterfaceName>
17     </Interface>
18   </Interfaces>
19   <Attributes>
20     <Attribute>
21       <AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName>
22     </Attribute>
23   </Attributes>
24   <Docs>
25     <remarks>
26       <attribution license="cc4" from="Microsoft" modified="false" />
27       <para>To get an instance of <see cref="T:Microsoft.Win32.RegistryKey" />, use one of the static members of the <see cref="T:Microsoft.Win32.Registry" /> class.</para>
28       <para>The registry acts as a central repository of information for the operating system and the applications on a computer. The registry is organized in a hierarchical format, based on a logical ordering of the elements stored within it (please see <see cref="T:Microsoft.Win32.Registry" /> for the base-level items in this hierarchy). When storing information in the registry, select the appropriate location based on the type of information being stored. Be sure to avoid destroying information created by other applications, because this can cause those applications to exhibit unexpected behavior, and can also have an adverse effect upon your own application.</para>
29       <para>Registry keys are the base unit of organization in the registry, and can be compared to folders in File Explorer. A particular key can have subkeys, just as a folder can have subfolders. Each key can be deleted, as long as the user has the appropriate permissions to do so, and the key is not a base key or at the level directly under the base keys. Each key can also have multiple values associated with it (a value can be compared to a file), which are used to store the information — for example, information about an application installed on the computer. Each value holds one particular piece of information, which can be retrieved or updated when required. For instance, you can create a <see cref="T:Microsoft.Win32.RegistryKey" /> for your company, under the key HKEY_LOCAL_MACHINE\Software, and then a subkey for each application that your company creates. Each subkey holds the information specific to that application, such as color settings, screen location and size, or recognized file extensions.</para>
30       <para>Note that information stored in the registry is available to other applications and users, and therefore should not be used to store security data or critical application information.</para>
31       <block subset="none" type="note">
32         <para>Do not expose <see cref="T:Microsoft.Win32.RegistryKey" /> objects in such a way that a malicious program could create thousands of meaningless subkeys or key/value pairs. For example, do not allow callers to enter arbitrary keys or values.</para>
33       </block>
34       <para>Starting in the net_v40_long, the length of a registry key is no longer limited to 255 characters.</para>
35     </remarks>
36     <summary>
37       <attribution license="cc4" from="Microsoft" modified="false" />
38       <para>Represents a key-level node in the Windows registry. This class is a registry encapsulation.</para>
39     </summary>
40   </Docs>
41   <Members>
42     <Member MemberName="Close">
43       <MemberSignature Language="C#" Value="public void Close ();" />
44       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Close() cil managed" />
45       <MemberType>Method</MemberType>
46       <AssemblyInfo>
47         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
48         <AssemblyVersion>2.0.0.0</AssemblyVersion>
49         <AssemblyVersion>4.0.0.0</AssemblyVersion>
50       </AssemblyInfo>
51       <ReturnValue>
52         <ReturnType>System.Void</ReturnType>
53       </ReturnValue>
54       <Parameters />
55       <Docs>
56         <remarks>
57           <attribution license="cc4" from="Microsoft" modified="false" />
58           <para>Calling this method on system keys will have no effect, because system keys are never closed.</para>
59           <para>This method does nothing if you call it on an instance of RegistryKey that is already closed.</para>
60         </remarks>
61         <summary>
62           <attribution license="cc4" from="Microsoft" modified="false" />
63           <para>Closes the key and flushes it to disk if its contents have been modified.</para>
64         </summary>
65       </Docs>
66     </Member>
67     <Member MemberName="CreateSubKey">
68       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryKey CreateSubKey (string subkey);" />
69       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Microsoft.Win32.RegistryKey CreateSubKey(string subkey) cil managed" />
70       <MemberType>Method</MemberType>
71       <AssemblyInfo>
72         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
73         <AssemblyVersion>2.0.0.0</AssemblyVersion>
74         <AssemblyVersion>4.0.0.0</AssemblyVersion>
75       </AssemblyInfo>
76       <ReturnValue>
77         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
78       </ReturnValue>
79       <Parameters>
80         <Parameter Name="subkey" Type="System.String" />
81       </Parameters>
82       <Docs>
83         <returns>The newly created key.</returns>
84         <remarks>
85           <attribution license="cc4" from="Microsoft" modified="false" />
86           <para>In order to perform this action, the user must have permission at this level and below in the registry hierarchy.</para>
87           <block subset="none" type="note">
88             <para>Do not expose <see cref="T:Microsoft.Win32.RegistryKey" /> objects in such a way that a malicious program could create thousands of meaningless subkeys or key/value pairs. For example, do not allow callers to enter arbitrary keys or values.</para>
89           </block>
90         </remarks>
91         <summary>
92           <attribution license="cc4" from="Microsoft" modified="false" />
93           <para>Creates a new subkey or opens an existing subkey for write access.  </para>
94         </summary>
95         <param name="subkey">
96           <attribution license="cc4" from="Microsoft" modified="false" />The name or path of the subkey to create or open. This string is not case-sensitive.</param>
97       </Docs>
98     </Member>
99     <Member MemberName="CreateSubKey">
100       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck);" />
101       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Microsoft.Win32.RegistryKey CreateSubKey(string subkey, valuetype Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck) cil managed" />
102       <MemberType>Method</MemberType>
103       <AssemblyInfo>
104         <AssemblyVersion>2.0.0.0</AssemblyVersion>
105         <AssemblyVersion>4.0.0.0</AssemblyVersion>
106       </AssemblyInfo>
107       <Attributes>
108         <Attribute>
109           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
110         </Attribute>
111       </Attributes>
112       <ReturnValue>
113         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
114       </ReturnValue>
115       <Parameters>
116         <Parameter Name="subkey" Type="System.String" />
117         <Parameter Name="permissionCheck" Type="Microsoft.Win32.RegistryKeyPermissionCheck" />
118       </Parameters>
119       <Docs>
120         <returns>To be added.</returns>
121         <since version=".NET 2.0" />
122         <remarks>
123           <attribution license="cc4" from="Microsoft" modified="false" />
124           <para>In order to perform this action, the user must have permission at this level and below in the registry hierarchy.</para>
125           <block subset="none" type="note">
126             <para>Do not expose <see cref="T:Microsoft.Win32.RegistryKey" /> objects in such a way that a malicious program could create thousands of meaningless subkeys or key/value pairs. For example, do not allow callers to enter arbitrary keys or values.</para>
127           </block>
128           <para>In order to use the <see cref="M:Microsoft.Win32.RegistryKey.OpenSubKey(System.String)" /> method, you must have an instance of the <see cref="T:Microsoft.Win32.RegistryKey" /> class. To get an instance of <see cref="T:Microsoft.Win32.RegistryKey" />, use one of the static members of the <see cref="T:Microsoft.Win32.Registry" /> class.</para>
129         </remarks>
130         <summary>
131           <attribution license="cc4" from="Microsoft" modified="false" />
132           <para>Creates a new subkey or opens an existing subkey for write access, using the specified permission check option. </para>
133         </summary>
134         <param name="subkey">
135           <attribution license="cc4" from="Microsoft" modified="false" />The name or path of the subkey to create or open. This string is not case-sensitive.</param>
136         <param name="permissionCheck">
137           <attribution license="cc4" from="Microsoft" modified="false" />One of the enumeration values that specifies whether the key is opened for read or read/write access.</param>
138       </Docs>
139     </Member>
140     <Member MemberName="CreateSubKey">
141       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, Microsoft.Win32.RegistryOptions options);" />
142       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Microsoft.Win32.RegistryKey CreateSubKey(string subkey, valuetype Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, valuetype Microsoft.Win32.RegistryOptions options) cil managed" />
143       <MemberType>Method</MemberType>
144       <AssemblyInfo>
145         <AssemblyVersion>4.0.0.0</AssemblyVersion>
146       </AssemblyInfo>
147       <Attributes>
148         <Attribute>
149           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
150         </Attribute>
151       </Attributes>
152       <ReturnValue>
153         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
154       </ReturnValue>
155       <Parameters>
156         <Parameter Name="subkey" Type="System.String" />
157         <Parameter Name="permissionCheck" Type="Microsoft.Win32.RegistryKeyPermissionCheck" />
158         <Parameter Name="options" Type="Microsoft.Win32.RegistryOptions" />
159       </Parameters>
160       <Docs>
161         <returns>To be added.</returns>
162         <remarks>
163           <attribution license="cc4" from="Microsoft" modified="false" />
164           <para>To obtain the current <see cref="T:Microsoft.Win32.RegistryKey" /> object, specify an empty string ("") for <paramref name="subkey" />.</para>
165         </remarks>
166         <summary>
167           <attribution license="cc4" from="Microsoft" modified="false" />
168           <para>Creates a subkey or opens a subkey for write access, using the specified permission check and registry options. </para>
169         </summary>
170         <param name="subkey">
171           <attribution license="cc4" from="Microsoft" modified="false" />The name or path of the subkey to create or open. </param>
172         <param name="permissionCheck">
173           <attribution license="cc4" from="Microsoft" modified="false" />One of the enumeration values that specifies whether the key is opened for read or read/write access.</param>
174         <param name="options">
175           <attribution license="cc4" from="Microsoft" modified="false" />The registry option to use; for example, that creates a volatile key. </param>
176       </Docs>
177     </Member>
178     <Member MemberName="CreateSubKey">
179       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, System.Security.AccessControl.RegistrySecurity registrySecurity);" />
180       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Microsoft.Win32.RegistryKey CreateSubKey(string subkey, valuetype Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, class System.Security.AccessControl.RegistrySecurity registrySecurity) cil managed" />
181       <MemberType>Method</MemberType>
182       <AssemblyInfo>
183         <AssemblyVersion>2.0.0.0</AssemblyVersion>
184         <AssemblyVersion>4.0.0.0</AssemblyVersion>
185       </AssemblyInfo>
186       <Attributes>
187         <Attribute>
188           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
189         </Attribute>
190       </Attributes>
191       <ReturnValue>
192         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
193       </ReturnValue>
194       <Parameters>
195         <Parameter Name="subkey" Type="System.String" />
196         <Parameter Name="permissionCheck" Type="Microsoft.Win32.RegistryKeyPermissionCheck" />
197         <Parameter Name="registrySecurity" Type="System.Security.AccessControl.RegistrySecurity" />
198       </Parameters>
199       <Docs>
200         <returns>To be added.</returns>
201         <since version=".NET 2.0" />
202         <remarks>
203           <attribution license="cc4" from="Microsoft" modified="false" />
204           <para>The <see cref="M:Microsoft.Win32.RegistryKey.CreateSubKey(System.String,Microsoft.Win32.RegistryKeyPermissionCheck,System.Security.AccessControl.RegistrySecurity)" /> method creates a registry key that has the access control specified by the <paramref name="registrySecurity" /> parameter. The <see cref="T:Microsoft.Win32.RegistryKey" /> object that is returned represents the registry key, but that object is not restricted by the access control specified in the <paramref name="registrySecurity" /> parameter.</para>
205           <para>If <paramref name="permissionCheck" /> is <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree" />, the key is opened for read/write access. If <paramref name="permissionCheck" /> is <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.ReadSubTree" />, the key is opened for read access.</para>
206           <para>For backward compatibility, the key is opened for reading and writing if <paramref name="permissionCheck" /> is <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.Default" /> and the parent key also has <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.Default" />. If the parent key has any other setting, read/write status is controlled by the parent key's setting.</para>
207           <para>In order to perform this action, the user must have permissions at this level and below in the registry hierarchy.</para>
208           <block subset="none" type="note">
209             <para>Do not expose <see cref="T:Microsoft.Win32.RegistryKey" /> objects in such a way that a malicious program could create thousands of meaningless subkeys or key/value pairs. For example, do not allow callers to enter arbitrary keys or values.</para>
210           </block>
211           <para>In order to use the <see cref="M:Microsoft.Win32.RegistryKey.OpenSubKey(System.String)" /> method, you must have an instance of the <see cref="T:Microsoft.Win32.RegistryKey" /> class. To get an instance of <see cref="T:Microsoft.Win32.RegistryKey" />, use one of the static members of the <see cref="T:Microsoft.Win32.Registry" /> class.</para>
212         </remarks>
213         <summary>
214           <attribution license="cc4" from="Microsoft" modified="false" />
215           <para>Creates a new subkey or opens an existing subkey for write access, using the specified permission check option and registry security. </para>
216         </summary>
217         <param name="subkey">
218           <attribution license="cc4" from="Microsoft" modified="false" />The name or path of the subkey to create or open. This string is not case-sensitive.</param>
219         <param name="permissionCheck">
220           <attribution license="cc4" from="Microsoft" modified="false" />One of the enumeration values that specifies whether the key is opened for read or read/write access.</param>
221         <param name="registrySecurity">
222           <attribution license="cc4" from="Microsoft" modified="false" />The access control security for the new key.</param>
223       </Docs>
224     </Member>
225     <Member MemberName="CreateSubKey">
226       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryKey CreateSubKey (string subkey, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, Microsoft.Win32.RegistryOptions registryOptions, System.Security.AccessControl.RegistrySecurity registrySecurity);" />
227       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Microsoft.Win32.RegistryKey CreateSubKey(string subkey, valuetype Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, valuetype Microsoft.Win32.RegistryOptions registryOptions, class System.Security.AccessControl.RegistrySecurity registrySecurity) cil managed" />
228       <MemberType>Method</MemberType>
229       <AssemblyInfo>
230         <AssemblyVersion>4.0.0.0</AssemblyVersion>
231       </AssemblyInfo>
232       <Attributes>
233         <Attribute>
234           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
235         </Attribute>
236       </Attributes>
237       <ReturnValue>
238         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
239       </ReturnValue>
240       <Parameters>
241         <Parameter Name="subkey" Type="System.String" />
242         <Parameter Name="permissionCheck" Type="Microsoft.Win32.RegistryKeyPermissionCheck" />
243         <Parameter Name="registryOptions" Type="Microsoft.Win32.RegistryOptions" />
244         <Parameter Name="registrySecurity" Type="System.Security.AccessControl.RegistrySecurity" />
245       </Parameters>
246       <Docs>
247         <returns>To be added.</returns>
248         <remarks>
249           <attribution license="cc4" from="Microsoft" modified="false" />
250           <para>To obtain the current <see cref="T:Microsoft.Win32.RegistryKey" /> object, specify an empty string ("") for <paramref name="subkey" />.</para>
251         </remarks>
252         <summary>
253           <attribution license="cc4" from="Microsoft" modified="false" />
254           <para>Creates a subkey or opens a subkey for write access, using the specified permission check option, registry option, and registry security.</para>
255         </summary>
256         <param name="subkey">
257           <attribution license="cc4" from="Microsoft" modified="false" />The name or path of the subkey to create or open.</param>
258         <param name="permissionCheck">
259           <attribution license="cc4" from="Microsoft" modified="false" />One of the enumeration values that specifies whether the key is opened for read or read/write access.</param>
260         <param name="registryOptions">
261           <attribution license="cc4" from="Microsoft" modified="false" />The registry option to use.</param>
262         <param name="registrySecurity">
263           <attribution license="cc4" from="Microsoft" modified="false" />The access control security for the new subkey. </param>
264       </Docs>
265     </Member>
266     <Member MemberName="DeleteSubKey">
267       <MemberSignature Language="C#" Value="public void DeleteSubKey (string subkey);" />
268       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void DeleteSubKey(string subkey) cil managed" />
269       <MemberType>Method</MemberType>
270       <AssemblyInfo>
271         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
272         <AssemblyVersion>2.0.0.0</AssemblyVersion>
273         <AssemblyVersion>4.0.0.0</AssemblyVersion>
274       </AssemblyInfo>
275       <ReturnValue>
276         <ReturnType>System.Void</ReturnType>
277       </ReturnValue>
278       <Parameters>
279         <Parameter Name="subkey" Type="System.String" />
280       </Parameters>
281       <Docs>
282         <remarks>
283           <attribution license="cc4" from="Microsoft" modified="false" />
284           <para>To delete child subkeys, use <see cref="M:Microsoft.Win32.RegistryKey.DeleteSubKeyTree(System.String)" />.</para>
285           <para>Use caution when deleting registry keys.</para>
286         </remarks>
287         <summary>
288           <attribution license="cc4" from="Microsoft" modified="false" />
289           <para>Deletes the specified subkey. </para>
290         </summary>
291         <param name="subkey">
292           <attribution license="cc4" from="Microsoft" modified="false" />The name of the subkey to delete. This string is not case-sensitive.</param>
293       </Docs>
294     </Member>
295     <Member MemberName="DeleteSubKey">
296       <MemberSignature Language="C#" Value="public void DeleteSubKey (string subkey, bool throwOnMissingSubKey);" />
297       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void DeleteSubKey(string subkey, bool throwOnMissingSubKey) cil managed" />
298       <MemberType>Method</MemberType>
299       <AssemblyInfo>
300         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
301         <AssemblyVersion>2.0.0.0</AssemblyVersion>
302         <AssemblyVersion>4.0.0.0</AssemblyVersion>
303       </AssemblyInfo>
304       <ReturnValue>
305         <ReturnType>System.Void</ReturnType>
306       </ReturnValue>
307       <Parameters>
308         <Parameter Name="subkey" Type="System.String" />
309         <Parameter Name="throwOnMissingSubKey" Type="System.Boolean" />
310       </Parameters>
311       <Docs>
312         <remarks>
313           <attribution license="cc4" from="Microsoft" modified="false" />
314           <para>To delete child subkeys, use <see cref="M:Microsoft.Win32.RegistryKey.DeleteSubKeyTree(System.String)" />.</para>
315           <para>Use caution when deleting registry keys.</para>
316         </remarks>
317         <summary>
318           <attribution license="cc4" from="Microsoft" modified="false" />
319           <para>Deletes the specified subkey, and specifies whether an exception is raised if the subkey is not found. </para>
320         </summary>
321         <param name="subkey">
322           <attribution license="cc4" from="Microsoft" modified="false" />The name of the subkey to delete. This string is not case-sensitive.</param>
323         <param name="throwOnMissingSubKey">
324           <attribution license="cc4" from="Microsoft" modified="false" />Indicates whether an exception should be raised if the specified subkey cannot be found. If this argument is true and the specified subkey does not exist, an exception is raised. If this argument is false and the specified subkey does not exist, no action is taken. </param>
325       </Docs>
326     </Member>
327     <Member MemberName="DeleteSubKeyTree">
328       <MemberSignature Language="C#" Value="public void DeleteSubKeyTree (string subkey);" />
329       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void DeleteSubKeyTree(string subkey) cil managed" />
330       <MemberType>Method</MemberType>
331       <AssemblyInfo>
332         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
333         <AssemblyVersion>2.0.0.0</AssemblyVersion>
334         <AssemblyVersion>4.0.0.0</AssemblyVersion>
335       </AssemblyInfo>
336       <ReturnValue>
337         <ReturnType>System.Void</ReturnType>
338       </ReturnValue>
339       <Parameters>
340         <Parameter Name="subkey" Type="System.String" />
341       </Parameters>
342       <Docs>
343         <remarks>
344           <attribution license="cc4" from="Microsoft" modified="false" />
345           <para>You must have appropriate permissions to delete the subkey and its tree.</para>
346           <block subset="none" type="note">
347             <para>Deleting a particular key will remove all entries below the key in the tree. No warning will be provided. If you want to delete a subkey only when it has no child subkeys, use the <see cref="M:Microsoft.Win32.RegistryKey.DeleteSubKey(System.String)" /> method.</para>
348           </block>
349         </remarks>
350         <summary>
351           <attribution license="cc4" from="Microsoft" modified="false" />
352           <para>Deletes a subkey and any child subkeys recursively. </para>
353         </summary>
354         <param name="subkey">
355           <attribution license="cc4" from="Microsoft" modified="false" />The subkey to delete. This string is not case-sensitive.</param>
356       </Docs>
357     </Member>
358     <Member MemberName="DeleteSubKeyTree">
359       <MemberSignature Language="C#" Value="public void DeleteSubKeyTree (string subkey, bool throwOnMissingSubKey);" />
360       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void DeleteSubKeyTree(string subkey, bool throwOnMissingSubKey) cil managed" />
361       <MemberType>Method</MemberType>
362       <AssemblyInfo>
363         <AssemblyVersion>4.0.0.0</AssemblyVersion>
364       </AssemblyInfo>
365       <ReturnValue>
366         <ReturnType>System.Void</ReturnType>
367       </ReturnValue>
368       <Parameters>
369         <Parameter Name="subkey" Type="System.String" />
370         <Parameter Name="throwOnMissingSubKey" Type="System.Boolean" />
371       </Parameters>
372       <Docs>
373         <remarks>To be added.</remarks>
374         <summary>
375           <attribution license="cc4" from="Microsoft" modified="false" />
376           <para>Deletes the specified subkey and any child subkeys recursively, and specifies whether an exception is raised if the subkey is not found. </para>
377         </summary>
378         <param name="subkey">
379           <attribution license="cc4" from="Microsoft" modified="false" />The name of the subkey to delete. This string is not case-sensitive.</param>
380         <param name="throwOnMissingSubKey">
381           <attribution license="cc4" from="Microsoft" modified="false" />Indicates whether an exception should be raised if the specified subkey cannot be found. If this argument is true and the specified subkey does not exist, an exception is raised. If this argument is false and the specified subkey does not exist, no action is taken.</param>
382       </Docs>
383     </Member>
384     <Member MemberName="DeleteValue">
385       <MemberSignature Language="C#" Value="public void DeleteValue (string name);" />
386       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void DeleteValue(string name) cil managed" />
387       <MemberType>Method</MemberType>
388       <AssemblyInfo>
389         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
390         <AssemblyVersion>2.0.0.0</AssemblyVersion>
391         <AssemblyVersion>4.0.0.0</AssemblyVersion>
392       </AssemblyInfo>
393       <ReturnValue>
394         <ReturnType>System.Void</ReturnType>
395       </ReturnValue>
396       <Parameters>
397         <Parameter Name="name" Type="System.String" />
398       </Parameters>
399       <Docs>
400         <remarks>
401           <attribution license="cc4" from="Microsoft" modified="false" />
402           <para>On Windows 95, Windows 98, Windows 98 Second Edition, and Windows Millennium Edition, specifying an empty string for the <paramref name="name" /> parameter does not delete the default value.</para>
403         </remarks>
404         <summary>
405           <attribution license="cc4" from="Microsoft" modified="false" />
406           <para>Deletes the specified value from this key.</para>
407         </summary>
408         <param name="name">
409           <attribution license="cc4" from="Microsoft" modified="false" />The name of the value to delete. </param>
410       </Docs>
411     </Member>
412     <Member MemberName="DeleteValue">
413       <MemberSignature Language="C#" Value="public void DeleteValue (string name, bool throwOnMissingValue);" />
414       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void DeleteValue(string name, bool throwOnMissingValue) cil managed" />
415       <MemberType>Method</MemberType>
416       <AssemblyInfo>
417         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
418         <AssemblyVersion>2.0.0.0</AssemblyVersion>
419         <AssemblyVersion>4.0.0.0</AssemblyVersion>
420       </AssemblyInfo>
421       <ReturnValue>
422         <ReturnType>System.Void</ReturnType>
423       </ReturnValue>
424       <Parameters>
425         <Parameter Name="name" Type="System.String" />
426         <Parameter Name="throwOnMissingValue" Type="System.Boolean" />
427       </Parameters>
428       <Docs>
429         <remarks>
430           <attribution license="cc4" from="Microsoft" modified="false" />
431           <para>If <paramref name="throwOnMissingValue" /> is false, there is no way to tell if the deletion was successful, without subsequently trying to access the value just deleted. Therefore, use caution when deleting values from the registry in this manner.</para>
432           <para>On Windows 95, Windows 98, Windows 98 Second Edition, and Windows Millennium Edition, specifying an empty string for the <paramref name="name" /> parameter does not delete the default value.</para>
433         </remarks>
434         <summary>
435           <attribution license="cc4" from="Microsoft" modified="false" />
436           <para>Deletes the specified value from this key, and specifies whether an exception is raised if the value is not found.</para>
437         </summary>
438         <param name="name">
439           <attribution license="cc4" from="Microsoft" modified="false" />The name of the value to delete. </param>
440         <param name="throwOnMissingValue">
441           <attribution license="cc4" from="Microsoft" modified="false" />Indicates whether an exception should be raised if the specified value cannot be found. If this argument is true and the specified value does not exist, an exception is raised. If this argument is false and the specified value does not exist, no action is taken. </param>
442       </Docs>
443     </Member>
444     <Member MemberName="Dispose">
445       <MemberSignature Language="C#" Value="public void Dispose ();" />
446       <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Dispose() cil managed" />
447       <MemberType>Method</MemberType>
448       <AssemblyInfo>
449         <AssemblyVersion>4.0.0.0</AssemblyVersion>
450       </AssemblyInfo>
451       <ReturnValue>
452         <ReturnType>System.Void</ReturnType>
453       </ReturnValue>
454       <Parameters />
455       <Docs>
456         <remarks>
457           <attribution license="cc4" from="Microsoft" modified="false" />
458           <para>Call Dispose when you are finished using the <see cref="T:Microsoft.Win32.RegistryKey" />. The Dispose method leaves the <see cref="T:Microsoft.Win32.RegistryKey" /> in an unusable state. After calling Dispose, you must release all references to the <see cref="T:Microsoft.Win32.RegistryKey" /> so the garbage collector can reclaim the memory that the <see cref="T:Microsoft.Win32.RegistryKey" /> was occupying.</para>
459           <para>For more information, see <format type="text/html"><a href="A17B0066-71C2-4BA4-9822-8E19332FC213">Cleaning Up Unmanaged Resources</a></format> and <format type="text/html"><a href="eb4e1af0-3b48-4fbc-ad4e-fc2f64138bf9">Implementing a Dispose Method</a></format>.</para>
460           <block subset="none" type="note">
461             <para>Always call Dispose before you release your last reference to the <see cref="T:Microsoft.Win32.RegistryKey" />. Otherwise, the resources it is using will not be freed until the garbage collector calls the <see cref="T:Microsoft.Win32.RegistryKey" /> object's Finalize method.</para>
462           </block>
463         </remarks>
464         <summary>
465           <attribution license="cc4" from="Microsoft" modified="false" />
466           <para>Releases all resources used by the current instance of the <see cref="T:Microsoft.Win32.RegistryKey" /> class.</para>
467         </summary>
468       </Docs>
469     </Member>
470     <Member MemberName="Finalize">
471       <MemberSignature Language="C#" Value="~RegistryKey ();" />
472       <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance void Finalize() cil managed" />
473       <MemberType>Method</MemberType>
474       <AssemblyInfo>
475         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
476         <AssemblyVersion>2.0.0.0</AssemblyVersion>
477         <AssemblyVersion>4.0.0.0</AssemblyVersion>
478       </AssemblyInfo>
479       <ReturnValue>
480         <ReturnType>System.Void</ReturnType>
481       </ReturnValue>
482       <Parameters />
483       <Docs>
484         <summary>To be added.</summary>
485         <remarks>To be added.</remarks>
486       </Docs>
487     </Member>
488     <Member MemberName="Flush">
489       <MemberSignature Language="C#" Value="public void Flush ();" />
490       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Flush() cil managed" />
491       <MemberType>Method</MemberType>
492       <AssemblyInfo>
493         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
494         <AssemblyVersion>2.0.0.0</AssemblyVersion>
495         <AssemblyVersion>4.0.0.0</AssemblyVersion>
496       </AssemblyInfo>
497       <ReturnValue>
498         <ReturnType>System.Void</ReturnType>
499       </ReturnValue>
500       <Parameters />
501       <Docs>
502         <remarks>
503           <attribution license="cc4" from="Microsoft" modified="false" />
504           <para>It is not necessary to call Flush to write out changes to a key. Registry changes are flushed to disk when the registry uses its lazy flusher. Lazy flushing occurs automatically and regularly after a system-specified time interval. Registry changes are also flushed to disk at system shutdown.</para>
505           <para>Unlike <see cref="M:Microsoft.Win32.RegistryKey.Close" />, the Flush function returns only when all the data has been written to the registry. </para>
506           <para>The Flush function might also write out parts of or all of the other keys. Calling this function excessively can have a negative effect on an application's performance.</para>
507           <para>An application should only call Flush if it must be absolute certain that registry changes are recorded to disk. In general, Flush rarely, if ever, need be used.</para>
508         </remarks>
509         <summary>
510           <attribution license="cc4" from="Microsoft" modified="false" />
511           <para>Writes all the attributes of the specified open registry key into the registry.</para>
512         </summary>
513       </Docs>
514     </Member>
515     <Member MemberName="FromHandle">
516       <MemberSignature Language="C#" Value="public static Microsoft.Win32.RegistryKey FromHandle (Microsoft.Win32.SafeHandles.SafeRegistryHandle handle);" />
517       <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Microsoft.Win32.RegistryKey FromHandle(class Microsoft.Win32.SafeHandles.SafeRegistryHandle handle) cil managed" />
518       <MemberType>Method</MemberType>
519       <AssemblyInfo>
520         <AssemblyVersion>4.0.0.0</AssemblyVersion>
521       </AssemblyInfo>
522       <Attributes>
523         <Attribute>
524           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
525         </Attribute>
526       </Attributes>
527       <ReturnValue>
528         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
529       </ReturnValue>
530       <Parameters>
531         <Parameter Name="handle" Type="Microsoft.Win32.SafeHandles.SafeRegistryHandle" />
532       </Parameters>
533       <Docs>
534         <returns>To be added.</returns>
535         <remarks>To be added.</remarks>
536         <summary>
537           <attribution license="cc4" from="Microsoft" modified="false" />
538           <para>Creates a registry key from a specified handle.</para>
539         </summary>
540         <param name="handle">
541           <attribution license="cc4" from="Microsoft" modified="false" />The handle to the registry key.</param>
542       </Docs>
543     </Member>
544     <Member MemberName="FromHandle">
545       <MemberSignature Language="C#" Value="public static Microsoft.Win32.RegistryKey FromHandle (Microsoft.Win32.SafeHandles.SafeRegistryHandle handle, Microsoft.Win32.RegistryView view);" />
546       <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Microsoft.Win32.RegistryKey FromHandle(class Microsoft.Win32.SafeHandles.SafeRegistryHandle handle, valuetype Microsoft.Win32.RegistryView view) cil managed" />
547       <MemberType>Method</MemberType>
548       <AssemblyInfo>
549         <AssemblyVersion>4.0.0.0</AssemblyVersion>
550       </AssemblyInfo>
551       <Attributes>
552         <Attribute>
553           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
554         </Attribute>
555       </Attributes>
556       <ReturnValue>
557         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
558       </ReturnValue>
559       <Parameters>
560         <Parameter Name="handle" Type="Microsoft.Win32.SafeHandles.SafeRegistryHandle" />
561         <Parameter Name="view" Type="Microsoft.Win32.RegistryView" />
562       </Parameters>
563       <Docs>
564         <returns>To be added.</returns>
565         <remarks>
566           <attribution license="cc4" from="Microsoft" modified="false" />
567           <para>The <paramref name="view" /> parameter for this method is used in subsequent operations, such as opening subkeys. </para>
568           <para>If <paramref name="view" /> is <see cref="F:Microsoft.Win32.RegistryView.Registry64" /> but the machine is running a 32-bit operating system, the returned key will use the <see cref="F:Microsoft.Win32.RegistryView.Registry32" /> view.</para>
569         </remarks>
570         <summary>
571           <attribution license="cc4" from="Microsoft" modified="false" />
572           <para>Creates a registry key from a specified handle and registry view setting. </para>
573         </summary>
574         <param name="handle">
575           <attribution license="cc4" from="Microsoft" modified="false" />The handle to the registry key.</param>
576         <param name="view">
577           <attribution license="cc4" from="Microsoft" modified="false" />The registry view to use.</param>
578       </Docs>
579     </Member>
580     <Member MemberName="GetAccessControl">
581       <MemberSignature Language="C#" Value="public System.Security.AccessControl.RegistrySecurity GetAccessControl ();" />
582       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Security.AccessControl.RegistrySecurity GetAccessControl() cil managed" />
583       <MemberType>Method</MemberType>
584       <AssemblyInfo>
585         <AssemblyVersion>2.0.0.0</AssemblyVersion>
586         <AssemblyVersion>4.0.0.0</AssemblyVersion>
587       </AssemblyInfo>
588       <ReturnValue>
589         <ReturnType>System.Security.AccessControl.RegistrySecurity</ReturnType>
590       </ReturnValue>
591       <Parameters />
592       <Docs>
593         <returns>To be added.</returns>
594         <since version=".NET 2.0" />
595         <remarks>
596           <attribution license="cc4" from="Microsoft" modified="false" />
597           <para>This method overload is equivalent to calling the <see cref="M:Microsoft.Win32.RegistryKey.GetAccessControl(System.Security.AccessControl.AccessControlSections)" /> method overload with the bitwise combination of the following flags: <see cref="F:System.Security.AccessControl.AccessControlSections.Access" />, <see cref="F:System.Security.AccessControl.AccessControlSections.Owner" />, and <see cref="F:System.Security.AccessControl.AccessControlSections.Group" />. You can use that overload to search for other permissions. </para>
598           <para>The user must have <see cref="F:System.Security.AccessControl.RegistryRights.ReadPermissions" /> rights to call this method.</para>
599         </remarks>
600         <summary>
601           <attribution license="cc4" from="Microsoft" modified="false" />
602           <para>Returns the access control security for the current registry key.</para>
603         </summary>
604       </Docs>
605     </Member>
606     <Member MemberName="GetAccessControl">
607       <MemberSignature Language="C#" Value="public System.Security.AccessControl.RegistrySecurity GetAccessControl (System.Security.AccessControl.AccessControlSections includeSections);" />
608       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Security.AccessControl.RegistrySecurity GetAccessControl(valuetype System.Security.AccessControl.AccessControlSections includeSections) cil managed" />
609       <MemberType>Method</MemberType>
610       <AssemblyInfo>
611         <AssemblyVersion>2.0.0.0</AssemblyVersion>
612         <AssemblyVersion>4.0.0.0</AssemblyVersion>
613       </AssemblyInfo>
614       <ReturnValue>
615         <ReturnType>System.Security.AccessControl.RegistrySecurity</ReturnType>
616       </ReturnValue>
617       <Parameters>
618         <Parameter Name="includeSections" Type="System.Security.AccessControl.AccessControlSections" />
619       </Parameters>
620       <Docs>
621         <returns>To be added.</returns>
622         <since version=".NET 2.0" />
623         <remarks>
624           <attribution license="cc4" from="Microsoft" modified="false" />
625           <para>To request the access permissions currently granted to users, specify the bitwise combination of the following flags: <see cref="F:System.Security.AccessControl.AccessControlSections.Access" />, <see cref="F:System.Security.AccessControl.AccessControlSections.Owner" />, and <see cref="F:System.Security.AccessControl.AccessControlSections.Group" />. Alternatively, you can use the <see cref="M:Microsoft.Win32.RegistryKey.GetAccessControl" /> method overload, which specifies exactly that combination of values. </para>
626           <para>The user must have <see cref="F:System.Security.AccessControl.RegistryRights.ReadPermissions" /> rights to call this method.</para>
627         </remarks>
628         <summary>
629           <attribution license="cc4" from="Microsoft" modified="false" />
630           <para>Returns the specified sections of the access control security for the current registry key.</para>
631         </summary>
632         <param name="includeSections">
633           <attribution license="cc4" from="Microsoft" modified="false" />A bitwise combination of enumeration values that specifies the type of security information to get. </param>
634       </Docs>
635     </Member>
636     <Member MemberName="GetSubKeyNames">
637       <MemberSignature Language="C#" Value="public string[] GetSubKeyNames ();" />
638       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance string[] GetSubKeyNames() cil managed" />
639       <MemberType>Method</MemberType>
640       <AssemblyInfo>
641         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
642         <AssemblyVersion>2.0.0.0</AssemblyVersion>
643         <AssemblyVersion>4.0.0.0</AssemblyVersion>
644       </AssemblyInfo>
645       <ReturnValue>
646         <ReturnType>System.String[]</ReturnType>
647       </ReturnValue>
648       <Parameters />
649       <Docs>
650         <returns>To be added.</returns>
651         <remarks>
652           <attribution license="cc4" from="Microsoft" modified="false" />
653           <para>This method does not recursively find names. It returns the names on the base level from which it was called.</para>
654         </remarks>
655         <summary>
656           <attribution license="cc4" from="Microsoft" modified="false" />
657           <para>Retrieves an array of strings that contains all the subkey names.</para>
658         </summary>
659       </Docs>
660     </Member>
661     <Member MemberName="GetValue">
662       <MemberSignature Language="C#" Value="public object GetValue (string name);" />
663       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(string name) cil managed" />
664       <MemberType>Method</MemberType>
665       <AssemblyInfo>
666         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
667         <AssemblyVersion>2.0.0.0</AssemblyVersion>
668         <AssemblyVersion>4.0.0.0</AssemblyVersion>
669       </AssemblyInfo>
670       <ReturnValue>
671         <ReturnType>System.Object</ReturnType>
672       </ReturnValue>
673       <Parameters>
674         <Parameter Name="name" Type="System.String" />
675       </Parameters>
676       <Docs>
677         <returns>The value stored, or null if the given key does not exist on the Registrykey.</returns>
678         <remarks>
679           <attribution license="cc4" from="Microsoft" modified="false" />
680           <block subset="none" type="note">
681             <para>A registry key can have one value that is not associated with any name. When this unnamed value is displayed in the registry editor, the string "(Default)" appears instead of a name. To retrieve this unnamed value, specify either null or the empty string ("") for <paramref name="name" />.</para>
682           </block>
683           <para>When the <see cref="M:Microsoft.Win32.RegistryKey.GetValue(System.String)" /> method retrieves expandable string values (<see cref="F:Microsoft.Win32.RegistryValueKind.ExpandString" />), it expands environment strings using data from the local environment. To retrieve expandable string values from the registry on a remote computer, use the <see cref="M:Microsoft.Win32.RegistryKey.GetValue(System.String,System.Object,Microsoft.Win32.RegistryValueOptions)" /> method overload to specify that you do not want environment strings expanded.</para>
684           <block subset="none" type="note">
685             <para>If a value containing expandable references to environment variables has been stored as a string (<see cref="F:Microsoft.Win32.RegistryValueKind.String" />), rather than as an expandable string (<see cref="F:Microsoft.Win32.RegistryValueKind.ExpandString" />), <see cref="M:Microsoft.Win32.RegistryKey.GetValue(System.String)" /> does not expand it. You can expand such a string after it has been retrieved by calling the <see cref="M:System.Environment.ExpandEnvironmentVariables(System.String)" /> method.</para>
686           </block>
687           <block subset="none" type="note">
688             <para>The recommended way to retrieve data from the <see cref="F:Microsoft.Win32.Registry.PerformanceData" /> key is to use the <see cref="T:System.Diagnostics.PerformanceCounter" /> class rather than the <see cref="Overload:Microsoft.Win32.RegistryKey.GetValue" /> method.</para>
689             <para>
690               <see cref="M:Microsoft.Win32.RegistryKey.GetValue(System.String)" /> does not support reading values of type REG_NONE or REG_LINK.  In both cases, the default value (null) is returned instead of the actual value.</para>
691           </block>
692         </remarks>
693         <summary>
694           <attribution license="cc4" from="Microsoft" modified="false" />
695           <para>Retrieves the value associated with the specified name. Returns null if the name/value pair does not exist in the registry.</para>
696         </summary>
697         <param name="name">
698           <attribution license="cc4" from="Microsoft" modified="false" />The name of the value to retrieve. This string is not case-sensitive.</param>
699       </Docs>
700     </Member>
701     <Member MemberName="GetValue">
702       <MemberSignature Language="C#" Value="public object GetValue (string name, object defaultValue);" />
703       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(string name, object defaultValue) cil managed" />
704       <MemberType>Method</MemberType>
705       <AssemblyInfo>
706         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
707         <AssemblyVersion>2.0.0.0</AssemblyVersion>
708         <AssemblyVersion>4.0.0.0</AssemblyVersion>
709       </AssemblyInfo>
710       <ReturnValue>
711         <ReturnType>System.Object</ReturnType>
712       </ReturnValue>
713       <Parameters>
714         <Parameter Name="name" Type="System.String" />
715         <Parameter Name="defaultValue" Type="System.Object" />
716       </Parameters>
717       <Docs>
718         <returns>The value associated with the key on the RegistryKey or the default value if not found.</returns>
719         <remarks>
720           <attribution license="cc4" from="Microsoft" modified="false" />
721           <para>Use this overload of <see cref="Overload:Microsoft.Win32.RegistryKey.GetValue" /> to handle the case where a name does not exist yet — for example, the first time your application is run. Whenever you call this overload, use the <paramref name="defaultValue" /> parameter to specify the value to return if <paramref name="name" /> does not exist.</para>
722           <block subset="none" type="note">
723             <para>A registry key can have one value that is not associated with any name. When this unnamed value is displayed in the registry editor, the string "(Default)" appears instead of a name. To retrieve this unnamed value, specify either null or the empty string ("") for <paramref name="name" />.</para>
724           </block>
725           <para>When the <see cref="M:Microsoft.Win32.RegistryKey.GetValue(System.String)" /> method retrieves expandable string values (<see cref="F:Microsoft.Win32.RegistryValueKind.ExpandString" />), it expands environment strings using data from the local environment. To retrieve expandable string values from the registry on a remote computer, use the <see cref="M:Microsoft.Win32.RegistryKey.GetValue(System.String,System.Object,Microsoft.Win32.RegistryValueOptions)" /> overload to specify that you do not want environment strings expanded.</para>
726           <block subset="none" type="note">
727             <para>If a value containing expandable references to environment variables has been stored as a string (<see cref="F:Microsoft.Win32.RegistryValueKind.String" />), rather than as an expandable string (<see cref="F:Microsoft.Win32.RegistryValueKind.ExpandString" />), the <see cref="M:Microsoft.Win32.RegistryKey.GetValue(System.String)" /> method does not expand it. You can expand such a string after it has been retrieved by calling the <see cref="M:System.Environment.ExpandEnvironmentVariables(System.String)" /> method.</para>
728           </block>
729           <block subset="none" type="note">
730             <para>The recommended way to retrieve data from the <see cref="F:Microsoft.Win32.Registry.PerformanceData" /> key is to use the <see cref="T:System.Diagnostics.PerformanceCounter" /> class rather than the <see cref="Overload:Microsoft.Win32.RegistryKey.GetValue" /> method.</para>
731             <para>
732               <see cref="M:Microsoft.Win32.RegistryKey.GetValue(System.String,System.Object)" /> does not support reading values of type REG_NONE or REG_LINK.  In both cases, the default value (null) is returned instead of the actual value.</para>
733           </block>
734         </remarks>
735         <summary>
736           <attribution license="cc4" from="Microsoft" modified="false" />
737           <para>Retrieves the value associated with the specified name. If the name is not found, returns the default value that you provide.</para>
738         </summary>
739         <param name="name">
740           <attribution license="cc4" from="Microsoft" modified="false" />The name of the value to retrieve. This string is not case-sensitive.</param>
741         <param name="defaultValue">
742           <attribution license="cc4" from="Microsoft" modified="false" />The value to return if <paramref name="name" /> does not exist. </param>
743       </Docs>
744     </Member>
745     <Member MemberName="GetValue">
746       <MemberSignature Language="C#" Value="public object GetValue (string name, object defaultValue, Microsoft.Win32.RegistryValueOptions options);" />
747       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(string name, object defaultValue, valuetype Microsoft.Win32.RegistryValueOptions options) cil managed" />
748       <MemberType>Method</MemberType>
749       <AssemblyInfo>
750         <AssemblyVersion>2.0.0.0</AssemblyVersion>
751         <AssemblyVersion>4.0.0.0</AssemblyVersion>
752       </AssemblyInfo>
753       <Attributes>
754         <Attribute>
755           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
756         </Attribute>
757       </Attributes>
758       <ReturnValue>
759         <ReturnType>System.Object</ReturnType>
760       </ReturnValue>
761       <Parameters>
762         <Parameter Name="name" Type="System.String" />
763         <Parameter Name="defaultValue" Type="System.Object" />
764         <Parameter Name="options" Type="Microsoft.Win32.RegistryValueOptions" />
765       </Parameters>
766       <Docs>
767         <returns>To be added.</returns>
768         <since version=".NET 2.0" />
769         <remarks>
770           <attribution license="cc4" from="Microsoft" modified="false" />
771           <para>Use this overload to specify special processing of the retrieved value. For example, you can specify <see cref="F:Microsoft.Win32.RegistryValueOptions.DoNotExpandEnvironmentNames" /> when retrieving a registry value of type <see cref="F:Microsoft.Win32.RegistryValueKind.ExpandString" /> to retrieve the string without expanding embedded environment variables.</para>
772           <para>Use the <paramref name="defaultValue" /> parameter to specify the value to return if <paramref name="name" /> does not exist.</para>
773           <block subset="none" type="note">
774             <para>A registry key can have one value that is not associated with any name. When this unnamed value is displayed in the registry editor, the string "(Default)" appears instead of a name. To retrieve this unnamed value, specify either null or the empty string ("") for <paramref name="name" />.</para>
775             <para>
776               <see cref="M:Microsoft.Win32.RegistryKey.GetValue(System.String,System.Object,Microsoft.Win32.RegistryValueOptions)" /> does not support reading values of type REG_NONE or REG_LINK.  In both cases, the default value (null) is returned instead of the actual value.</para>
777           </block>
778         </remarks>
779         <summary>
780           <attribution license="cc4" from="Microsoft" modified="false" />
781           <para>Retrieves the value associated with the specified name and retrieval options. If the name is not found, returns the default value that you provide.</para>
782         </summary>
783         <param name="name">
784           <attribution license="cc4" from="Microsoft" modified="false" />The name of the value to retrieve. This string is not case-sensitive.</param>
785         <param name="defaultValue">
786           <attribution license="cc4" from="Microsoft" modified="false" />The value to return if <paramref name="name" /> does not exist. </param>
787         <param name="options">
788           <attribution license="cc4" from="Microsoft" modified="false" />One of the enumeration values that specifies optional processing of the retrieved value.</param>
789       </Docs>
790     </Member>
791     <Member MemberName="GetValueKind">
792       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryValueKind GetValueKind (string name);" />
793       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype Microsoft.Win32.RegistryValueKind GetValueKind(string name) cil managed" />
794       <MemberType>Method</MemberType>
795       <AssemblyInfo>
796         <AssemblyVersion>2.0.0.0</AssemblyVersion>
797         <AssemblyVersion>4.0.0.0</AssemblyVersion>
798       </AssemblyInfo>
799       <Attributes>
800         <Attribute>
801           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
802         </Attribute>
803       </Attributes>
804       <ReturnValue>
805         <ReturnType>Microsoft.Win32.RegistryValueKind</ReturnType>
806       </ReturnValue>
807       <Parameters>
808         <Parameter Name="name" Type="System.String" />
809       </Parameters>
810       <Docs>
811         <returns>To be added.</returns>
812         <since version=".NET 2.0" />
813         <remarks>
814           <attribution license="cc4" from="Microsoft" modified="false" />
815           <block subset="none" type="note">
816             <para>A registry key can have one value that is not associated with any name. When this unnamed value is displayed in the registry editor, the string "(Default)" appears instead of a name. To retrieve the registry data type of this unnamed value, specify either null or the empty string ("") for <paramref name="name" />.</para>
817           </block>
818           <para>For a description of supported registry data types, please see the <see cref="T:Microsoft.Win32.RegistryValueKind" /> enumeration.</para>
819         </remarks>
820         <summary>
821           <attribution license="cc4" from="Microsoft" modified="false" />
822           <para>Retrieves the registry data type of the value associated with the specified name.</para>
823         </summary>
824         <param name="name">
825           <attribution license="cc4" from="Microsoft" modified="false" />The name of the value whose registry data type is to be retrieved. This string is not case-sensitive.</param>
826       </Docs>
827     </Member>
828     <Member MemberName="GetValueNames">
829       <MemberSignature Language="C#" Value="public string[] GetValueNames ();" />
830       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance string[] GetValueNames() cil managed" />
831       <MemberType>Method</MemberType>
832       <AssemblyInfo>
833         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
834         <AssemblyVersion>2.0.0.0</AssemblyVersion>
835         <AssemblyVersion>4.0.0.0</AssemblyVersion>
836       </AssemblyInfo>
837       <ReturnValue>
838         <ReturnType>System.String[]</ReturnType>
839       </ReturnValue>
840       <Parameters />
841       <Docs>
842         <returns>To be added.</returns>
843         <remarks>
844           <attribution license="cc4" from="Microsoft" modified="false" />
845           <para>If no value names for the key are found, an empty array is returned.</para>
846           <para>A registry key can have a default value — that is, a name/value pair in which the name is the empty string (""). If a default value has been set for a registry key, the array returned by the <see cref="M:Microsoft.Win32.RegistryKey.GetValueNames" /> method includes the empty string.</para>
847         </remarks>
848         <summary>
849           <attribution license="cc4" from="Microsoft" modified="false" />
850           <para>Retrieves an array of strings that contains all the value names associated with this key.</para>
851         </summary>
852       </Docs>
853     </Member>
854     <Member MemberName="Handle">
855       <MemberSignature Language="C#" Value="public Microsoft.Win32.SafeHandles.SafeRegistryHandle Handle { get; }" />
856       <MemberSignature Language="ILAsm" Value=".property instance class Microsoft.Win32.SafeHandles.SafeRegistryHandle Handle" />
857       <MemberType>Property</MemberType>
858       <AssemblyInfo>
859         <AssemblyVersion>4.0.0.0</AssemblyVersion>
860       </AssemblyInfo>
861       <Attributes>
862         <Attribute>
863           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
864         </Attribute>
865       </Attributes>
866       <ReturnValue>
867         <ReturnType>Microsoft.Win32.SafeHandles.SafeRegistryHandle</ReturnType>
868       </ReturnValue>
869       <Docs>
870         <value>To be added.</value>
871         <remarks>To be added.</remarks>
872         <summary>
873           <attribution license="cc4" from="Microsoft" modified="false" />
874           <para>Gets a <see cref="T:Microsoft.Win32.SafeHandles.SafeRegistryHandle" /> object that represents the registry key that the current <see cref="T:Microsoft.Win32.RegistryKey" /> object encapsulates.</para>
875         </summary>
876       </Docs>
877     </Member>
878     <Member MemberName="Name">
879       <MemberSignature Language="C#" Value="public string Name { get; }" />
880       <MemberSignature Language="ILAsm" Value=".property instance string Name" />
881       <MemberType>Property</MemberType>
882       <AssemblyInfo>
883         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
884         <AssemblyVersion>2.0.0.0</AssemblyVersion>
885         <AssemblyVersion>4.0.0.0</AssemblyVersion>
886       </AssemblyInfo>
887       <ReturnValue>
888         <ReturnType>System.String</ReturnType>
889       </ReturnValue>
890       <Docs>
891         <value />
892         <remarks>
893           <attribution license="cc4" from="Microsoft" modified="false" />
894           <para>The name of the key includes the absolute path of this key in the registry, always starting at a base key, for example, HKEY_LOCAL_MACHINE.</para>
895         </remarks>
896         <summary>
897           <attribution license="cc4" from="Microsoft" modified="false" />
898           <para>Retrieves the name of the key.</para>
899         </summary>
900       </Docs>
901     </Member>
902     <Member MemberName="OpenBaseKey">
903       <MemberSignature Language="C#" Value="public static Microsoft.Win32.RegistryKey OpenBaseKey (Microsoft.Win32.RegistryHive hKey, Microsoft.Win32.RegistryView view);" />
904       <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Microsoft.Win32.RegistryKey OpenBaseKey(valuetype Microsoft.Win32.RegistryHive hKey, valuetype Microsoft.Win32.RegistryView view) cil managed" />
905       <MemberType>Method</MemberType>
906       <AssemblyInfo>
907         <AssemblyVersion>4.0.0.0</AssemblyVersion>
908       </AssemblyInfo>
909       <Attributes>
910         <Attribute>
911           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
912         </Attribute>
913       </Attributes>
914       <ReturnValue>
915         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
916       </ReturnValue>
917       <Parameters>
918         <Parameter Name="hKey" Type="Microsoft.Win32.RegistryHive" />
919         <Parameter Name="view" Type="Microsoft.Win32.RegistryView" />
920       </Parameters>
921       <Docs>
922         <returns>To be added.</returns>
923         <remarks>To be added.</remarks>
924         <summary>
925           <attribution license="cc4" from="Microsoft" modified="false" />
926           <para>Opens a new <see cref="T:Microsoft.Win32.RegistryKey" /> that represents the requested key on the local machine with the specified view.</para>
927         </summary>
928         <param name="hKey">
929           <attribution license="cc4" from="Microsoft" modified="false" />The HKEY to open.</param>
930         <param name="view">
931           <attribution license="cc4" from="Microsoft" modified="false" />The registry view to use.</param>
932       </Docs>
933     </Member>
934     <Member MemberName="OpenRemoteBaseKey">
935       <MemberSignature Language="C#" Value="public static Microsoft.Win32.RegistryKey OpenRemoteBaseKey (Microsoft.Win32.RegistryHive hKey, string machineName);" />
936       <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Microsoft.Win32.RegistryKey OpenRemoteBaseKey(valuetype Microsoft.Win32.RegistryHive hKey, string machineName) cil managed" />
937       <MemberType>Method</MemberType>
938       <AssemblyInfo>
939         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
940         <AssemblyVersion>2.0.0.0</AssemblyVersion>
941         <AssemblyVersion>4.0.0.0</AssemblyVersion>
942       </AssemblyInfo>
943       <ReturnValue>
944         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
945       </ReturnValue>
946       <Parameters>
947         <Parameter Name="hKey" Type="Microsoft.Win32.RegistryHive" />
948         <Parameter Name="machineName" Type="System.String" />
949       </Parameters>
950       <Docs>
951         <returns>To be added.</returns>
952         <remarks>
953           <attribution license="cc4" from="Microsoft" modified="false" />
954           <para>The local machine registry is opened if <paramref name="machineName" /> is <see cref="F:System.String.Empty" />. The requested key must be a root key on the remote machine, and is identified by the appropriate <see cref="T:Microsoft.Win32.RegistryHive" /> value.</para>
955           <para>In order for a key to be opened remotely, both the server and client machines must be running the remote registry service, and have remote administration enabled.</para>
956         </remarks>
957         <summary>
958           <attribution license="cc4" from="Microsoft" modified="false" />
959           <para>Opens a new <see cref="T:Microsoft.Win32.RegistryKey" /> that represents the requested key on a remote machine.</para>
960         </summary>
961         <param name="hKey">
962           <attribution license="cc4" from="Microsoft" modified="false" />The HKEY to open, from the <see cref="T:Microsoft.Win32.RegistryHive" /> enumeration. </param>
963         <param name="machineName">
964           <attribution license="cc4" from="Microsoft" modified="false" />The remote machine. </param>
965       </Docs>
966     </Member>
967     <Member MemberName="OpenRemoteBaseKey">
968       <MemberSignature Language="C#" Value="public static Microsoft.Win32.RegistryKey OpenRemoteBaseKey (Microsoft.Win32.RegistryHive hKey, string machineName, Microsoft.Win32.RegistryView view);" />
969       <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Microsoft.Win32.RegistryKey OpenRemoteBaseKey(valuetype Microsoft.Win32.RegistryHive hKey, string machineName, valuetype Microsoft.Win32.RegistryView view) cil managed" />
970       <MemberType>Method</MemberType>
971       <AssemblyInfo>
972         <AssemblyVersion>4.0.0.0</AssemblyVersion>
973       </AssemblyInfo>
974       <Attributes>
975         <Attribute>
976           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
977         </Attribute>
978       </Attributes>
979       <ReturnValue>
980         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
981       </ReturnValue>
982       <Parameters>
983         <Parameter Name="hKey" Type="Microsoft.Win32.RegistryHive" />
984         <Parameter Name="machineName" Type="System.String" />
985         <Parameter Name="view" Type="Microsoft.Win32.RegistryView" />
986       </Parameters>
987       <Docs>
988         <returns>To be added.</returns>
989         <remarks>
990           <attribution license="cc4" from="Microsoft" modified="false" />
991           <para>The local machine registry is opened if <paramref name="machineName" /> is <see cref="F:System.String.Empty" />. The requested key must be a root key on the remote machine, and is identified by the appropriate <see cref="T:Microsoft.Win32.RegistryHive" /> value.</para>
992           <para>In order for a key to be opened remotely, both the server and client machines must be running the remote registry service, and have remote administration enabled. </para>
993           <para>On the 64-bit versions of Windows, portions of the registry are stored separately for 32-bit and 64-bit applications. There is a 32-bit view for 32-bit applications and a 64-bit view for 64-bit applications. If <paramref name="view" /> is <see cref="F:Microsoft.Win32.RegistryView.Registry64" /> but the remote machine is running a 32-bit operating system, the returned key will use the <see cref="F:Microsoft.Win32.RegistryView.Registry32" /> view. </para>
994         </remarks>
995         <summary>
996           <attribution license="cc4" from="Microsoft" modified="false" />
997           <para>Opens a new registry key that represents the requested key on a remote machine with the specified view.</para>
998         </summary>
999         <param name="hKey">
1000           <attribution license="cc4" from="Microsoft" modified="false" />The HKEY to open from the <see cref="T:Microsoft.Win32.RegistryHive" /> enumeration.. </param>
1001         <param name="machineName">
1002           <attribution license="cc4" from="Microsoft" modified="false" />The remote machine.</param>
1003         <param name="view">
1004           <attribution license="cc4" from="Microsoft" modified="false" />The registry view to use.</param>
1005       </Docs>
1006     </Member>
1007     <Member MemberName="OpenSubKey">
1008       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryKey OpenSubKey (string name);" />
1009       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Microsoft.Win32.RegistryKey OpenSubKey(string name) cil managed" />
1010       <MemberType>Method</MemberType>
1011       <AssemblyInfo>
1012         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
1013         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1014         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1015       </AssemblyInfo>
1016       <ReturnValue>
1017         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
1018       </ReturnValue>
1019       <Parameters>
1020         <Parameter Name="name" Type="System.String" />
1021       </Parameters>
1022       <Docs>
1023         <returns>To be added.</returns>
1024         <remarks>
1025           <attribution license="cc4" from="Microsoft" modified="false" />
1026           <para>You must open a key before it can be manipulated with other methods and properties. To modify a key, you must open it with an overload of the <see cref="Overload:Microsoft.Win32.RegistryKey.OpenSubKey" /> method that allows you to specify write access, such as the <see cref="M:Microsoft.Win32.RegistryKey.OpenSubKey(System.String,Microsoft.Win32.RegistryKeyPermissionCheck)" /> overload or the <see cref="M:Microsoft.Win32.RegistryKey.OpenSubKey(System.String,System.Boolean)" /> overload.</para>
1027           <para>If the specified subkey cannot be found, then null is returned.</para>
1028           <para>In order to use the <see cref="M:Microsoft.Win32.RegistryKey.OpenSubKey(System.String)" /> method, you must have an instance of <see cref="T:Microsoft.Win32.RegistryKey" />. To get an instance of <see cref="T:Microsoft.Win32.RegistryKey" />, use the one of the static members of the <see cref="T:Microsoft.Win32.Registry" /> class.</para>
1029         </remarks>
1030         <summary>
1031           <attribution license="cc4" from="Microsoft" modified="false" />
1032           <para>Retrieves a subkey as read-only.</para>
1033         </summary>
1034         <param name="name">
1035           <attribution license="cc4" from="Microsoft" modified="false" />The name or path of the subkey to open as read-only. </param>
1036       </Docs>
1037     </Member>
1038     <Member MemberName="OpenSubKey">
1039       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryKey OpenSubKey (string name, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck);" />
1040       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Microsoft.Win32.RegistryKey OpenSubKey(string name, valuetype Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck) cil managed" />
1041       <MemberType>Method</MemberType>
1042       <AssemblyInfo>
1043         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1044         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1045       </AssemblyInfo>
1046       <Attributes>
1047         <Attribute>
1048           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
1049         </Attribute>
1050       </Attributes>
1051       <ReturnValue>
1052         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
1053       </ReturnValue>
1054       <Parameters>
1055         <Parameter Name="name" Type="System.String" />
1056         <Parameter Name="permissionCheck" Type="Microsoft.Win32.RegistryKeyPermissionCheck" />
1057       </Parameters>
1058       <Docs>
1059         <returns>To be added.</returns>
1060         <since version=".NET 2.0" />
1061         <remarks>
1062           <attribution license="cc4" from="Microsoft" modified="false" />
1063           <para>Rather than throwing an exception, this method returns null if the requested key does not exist.</para>
1064           <para>If <paramref name="permissionCheck" /> is <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree" />, the key is opened for reading and writing; if <paramref name="permissionCheck" /> is <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.ReadSubTree" /> or <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.Default" />, the key is opened for reading unless the parent key was opened with <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree" />.</para>
1065           <para>In order to use the <see cref="M:Microsoft.Win32.RegistryKey.OpenSubKey(System.String)" /> method, you must have an instance of the <see cref="T:Microsoft.Win32.RegistryKey" /> class. To get an instance of <see cref="T:Microsoft.Win32.RegistryKey" />, use one of the static members of the <see cref="T:Microsoft.Win32.Registry" /> class.</para>
1066         </remarks>
1067         <summary>
1068           <attribution license="cc4" from="Microsoft" modified="false" />
1069           <para>Retrieves the specified subkey for read or read/write access.</para>
1070         </summary>
1071         <param name="name">
1072           <attribution license="cc4" from="Microsoft" modified="false" />The name or path of the subkey to create or open.</param>
1073         <param name="permissionCheck">
1074           <attribution license="cc4" from="Microsoft" modified="false" />One of the enumeration values that specifies whether the key is opened for read or read/write access.</param>
1075       </Docs>
1076     </Member>
1077     <Member MemberName="OpenSubKey">
1078       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryKey OpenSubKey (string name, bool writable);" />
1079       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Microsoft.Win32.RegistryKey OpenSubKey(string name, bool writable) cil managed" />
1080       <MemberType>Method</MemberType>
1081       <AssemblyInfo>
1082         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
1083         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1084         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1085       </AssemblyInfo>
1086       <ReturnValue>
1087         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
1088       </ReturnValue>
1089       <Parameters>
1090         <Parameter Name="name" Type="System.String" />
1091         <Parameter Name="writable" Type="System.Boolean" />
1092       </Parameters>
1093       <Docs>
1094         <returns>To be added.</returns>
1095         <remarks>
1096           <attribution license="cc4" from="Microsoft" modified="false" />
1097           <para>If the requested key does not exist, this method returns null instead of throwing an exception.</para>
1098           <para>If <paramref name="writable" /> is true, the key will be opened for reading and writing, otherwise, the key will be opened as read-only.</para>
1099           <para>In order to use the <see cref="M:Microsoft.Win32.RegistryKey.OpenSubKey(System.String)" /> method, you must have an instance of the <see cref="T:Microsoft.Win32.RegistryKey" /> method. To get an instance of <see cref="T:Microsoft.Win32.RegistryKey" />, use one of the static members of the <see cref="T:Microsoft.Win32.Registry" /> class.</para>
1100         </remarks>
1101         <summary>
1102           <attribution license="cc4" from="Microsoft" modified="false" />
1103           <para>Retrieves a specified subkey, and specifies whether write access is to be applied to the key. </para>
1104         </summary>
1105         <param name="name">
1106           <attribution license="cc4" from="Microsoft" modified="false" />Name or path of the subkey to open. </param>
1107         <param name="writable">
1108           <attribution license="cc4" from="Microsoft" modified="false" />Set to true if you need write access to the key. </param>
1109       </Docs>
1110     </Member>
1111     <Member MemberName="OpenSubKey">
1112       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryKey OpenSubKey (string name, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, System.Security.AccessControl.RegistryRights rights);" />
1113       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Microsoft.Win32.RegistryKey OpenSubKey(string name, valuetype Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, valuetype System.Security.AccessControl.RegistryRights rights) cil managed" />
1114       <MemberType>Method</MemberType>
1115       <AssemblyInfo>
1116         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1117         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1118       </AssemblyInfo>
1119       <Attributes>
1120         <Attribute>
1121           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
1122         </Attribute>
1123       </Attributes>
1124       <ReturnValue>
1125         <ReturnType>Microsoft.Win32.RegistryKey</ReturnType>
1126       </ReturnValue>
1127       <Parameters>
1128         <Parameter Name="name" Type="System.String" />
1129         <Parameter Name="permissionCheck" Type="Microsoft.Win32.RegistryKeyPermissionCheck" />
1130         <Parameter Name="rights" Type="System.Security.AccessControl.RegistryRights" />
1131       </Parameters>
1132       <Docs>
1133         <returns>To be added.</returns>
1134         <since version=".NET 2.0" />
1135         <remarks>
1136           <attribution license="cc4" from="Microsoft" modified="false" />
1137           <para>Rather than throwing an exception, this method returns null if the requested key does not exist.</para>
1138           <para>If <paramref name="permissionCheck" /> is <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree" />, the key is opened for reading and writing; if <paramref name="permissionCheck" /> is <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.ReadSubTree" /> or <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.Default" />, the key is opened for reading unless the parent key was opened with <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree" />.</para>
1139           <para>The access specified for <paramref name="permissionCheck" /> takes precedence over the access specified for <paramref name="rights" />. For example, if you specify <see cref="F:Microsoft.Win32.RegistryKeyPermissionCheck.ReadSubTree" /> for <paramref name="permissionCheck" /> and <see cref="F:System.Security.AccessControl.RegistryRights.WriteKey" /> for <paramref name="rights" />, an attempt to write to the subkey throws an exception.</para>
1140           <para>In order to use the <see cref="M:Microsoft.Win32.RegistryKey.OpenSubKey(System.String)" /> method, you must have an instance of the <see cref="T:Microsoft.Win32.RegistryKey" /> class. To get an instance of <see cref="T:Microsoft.Win32.RegistryKey" />, use one of the static members of the <see cref="T:Microsoft.Win32.Registry" /> class.</para>
1141         </remarks>
1142         <summary>
1143           <attribution license="cc4" from="Microsoft" modified="false" />
1144           <para>Retrieves the specified subkey for read or read/write access, requesting the specified access rights.</para>
1145         </summary>
1146         <param name="name">
1147           <attribution license="cc4" from="Microsoft" modified="false" />The name or path of the subkey to create or open.</param>
1148         <param name="permissionCheck">
1149           <attribution license="cc4" from="Microsoft" modified="false" />One of the enumeration values that specifies whether the key is opened for read or read/write access.</param>
1150         <param name="rights">
1151           <attribution license="cc4" from="Microsoft" modified="false" />A bitwise combination of enumeration values that specifies the desired security access.</param>
1152       </Docs>
1153     </Member>
1154     <Member MemberName="SetAccessControl">
1155       <MemberSignature Language="C#" Value="public void SetAccessControl (System.Security.AccessControl.RegistrySecurity registrySecurity);" />
1156       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetAccessControl(class System.Security.AccessControl.RegistrySecurity registrySecurity) cil managed" />
1157       <MemberType>Method</MemberType>
1158       <AssemblyInfo>
1159         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1160         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1161       </AssemblyInfo>
1162       <ReturnValue>
1163         <ReturnType>System.Void</ReturnType>
1164       </ReturnValue>
1165       <Parameters>
1166         <Parameter Name="registrySecurity" Type="System.Security.AccessControl.RegistrySecurity" />
1167       </Parameters>
1168       <Docs>
1169         <since version=".NET 2.0" />
1170         <remarks>
1171           <attribution license="cc4" from="Microsoft" modified="false" />
1172           <para>To modify permissions for a registry key, use the <see cref="Overload:Microsoft.Win32.RegistryKey.GetAccessControl" /> method to obtain a <see cref="T:System.Security.AccessControl.RegistrySecurity" /> object representing the existing Windows access control security, modify that <see cref="T:System.Security.AccessControl.RegistrySecurity" /> object, and then use the <see cref="M:Microsoft.Win32.RegistryKey.SetAccessControl(System.Security.AccessControl.RegistrySecurity)" /> method to update security for the key.</para>
1173           <block subset="none" type="note">
1174             <para>The <see cref="T:System.Security.AccessControl.RegistrySecurity" /> object specified for <paramref name="registrySecurity" /> replaces the existing security for the registry key. To add permissions for a new user, use the <see cref="Overload:Microsoft.Win32.RegistryKey.GetAccessControl" /> method to obtain the existing access control security, and then modify it.</para>
1175           </block>
1176         </remarks>
1177         <summary>
1178           <attribution license="cc4" from="Microsoft" modified="false" />
1179           <para>Applies Windows access control security to an existing registry key.</para>
1180         </summary>
1181         <param name="registrySecurity">
1182           <attribution license="cc4" from="Microsoft" modified="false" />The access control security to apply to the current subkey. </param>
1183       </Docs>
1184     </Member>
1185     <Member MemberName="SetValue">
1186       <MemberSignature Language="C#" Value="public void SetValue (string name, object value);" />
1187       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(string name, object value) cil managed" />
1188       <MemberType>Method</MemberType>
1189       <AssemblyInfo>
1190         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
1191         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1192         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1193       </AssemblyInfo>
1194       <ReturnValue>
1195         <ReturnType>System.Void</ReturnType>
1196       </ReturnValue>
1197       <Parameters>
1198         <Parameter Name="name" Type="System.String" />
1199         <Parameter Name="value" Type="System.Object" />
1200       </Parameters>
1201       <Docs>
1202         <remarks>
1203           <attribution license="cc4" from="Microsoft" modified="false" />
1204           <para>Because many values can be stored in each key in the registry, you must use the <paramref name="name" /> parameter to specify the particular value you want to set.</para>
1205           <block subset="none" type="note">
1206             <para>A registry key can have one value that is not associated with any name. When this unnamed value is displayed in the registry editor, the string "(Default)" appears instead of a name. To set this unnamed value, specify either null or the empty string ("") for <paramref name="name" />.</para>
1207           </block>
1208           <para>In order to set values in a key, you must open the key with write access. After you have opened a key with write access, you can change any of the name/value pairs in that key.</para>
1209           <para>If the specified <paramref name="name" /> does not exist in the key, it is created and the associated value is set to <paramref name="value" />.</para>
1210           <para>This overload of <see cref="Overload:Microsoft.Win32.RegistryKey.SetValue" /> stores 64-bit integers as strings (<see cref="F:Microsoft.Win32.RegistryValueKind.String" />). To store 64-bit numbers as <see cref="F:Microsoft.Win32.RegistryValueKind.QWord" /> values, use the <see cref="M:Microsoft.Win32.RegistryKey.SetValue(System.String,System.Object,Microsoft.Win32.RegistryValueKind)" /> overload that specifies <see cref="T:Microsoft.Win32.RegistryValueKind" />.</para>
1211           <para>This overload of <see cref="Overload:Microsoft.Win32.RegistryKey.SetValue" /> stores all string values as <see cref="F:Microsoft.Win32.RegistryValueKind.String" />, even if they contain expandable references to environment variables. To save string values as expandable strings (<see cref="F:Microsoft.Win32.RegistryValueKind.ExpandString" />), use the <see cref="M:Microsoft.Win32.RegistryKey.SetValue(System.String,System.Object,Microsoft.Win32.RegistryValueKind)" /> overload that specifies <see cref="T:Microsoft.Win32.RegistryValueKind" />.</para>
1212           <para>Numeric types other than 32-bit integers are stored as strings by this method overload. Enumeration elements are stored as strings containing the element names.</para>
1213           <block subset="none" type="note">
1214             <para>Do not expose <see cref="T:Microsoft.Win32.RegistryKey" /> objects in such a way that a malicious program could create thousands of meaningless subkeys or key/value pairs. For example, do not allow callers to enter arbitrary keys or values.</para>
1215           </block>
1216           <block subset="none" type="note">
1217             <para>On Windows 98 and Windows Millennium Edition the registry is not Unicode, and not all Unicode characters are valid for all code pages. A Unicode character that is invalid for the current code page is replaced by the best available match. No exception is thrown.</para>
1218           </block>
1219         </remarks>
1220         <summary>
1221           <attribution license="cc4" from="Microsoft" modified="false" />
1222           <para>Sets the specified name/value pair.</para>
1223         </summary>
1224         <param name="name">
1225           <attribution license="cc4" from="Microsoft" modified="false" />The name of the value to store. </param>
1226         <param name="value">
1227           <attribution license="cc4" from="Microsoft" modified="false" />The data to be stored. </param>
1228       </Docs>
1229     </Member>
1230     <Member MemberName="SetValue">
1231       <MemberSignature Language="C#" Value="public void SetValue (string name, object value, Microsoft.Win32.RegistryValueKind valueKind);" />
1232       <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(string name, object value, valuetype Microsoft.Win32.RegistryValueKind valueKind) cil managed" />
1233       <MemberType>Method</MemberType>
1234       <AssemblyInfo>
1235         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1236         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1237       </AssemblyInfo>
1238       <Attributes>
1239         <Attribute>
1240           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
1241         </Attribute>
1242       </Attributes>
1243       <ReturnValue>
1244         <ReturnType>System.Void</ReturnType>
1245       </ReturnValue>
1246       <Parameters>
1247         <Parameter Name="name" Type="System.String" />
1248         <Parameter Name="value" Type="System.Object" />
1249         <Parameter Name="valueKind" Type="Microsoft.Win32.RegistryValueKind" />
1250       </Parameters>
1251       <Docs>
1252         <since version=".NET 2.0" />
1253         <remarks>
1254           <attribution license="cc4" from="Microsoft" modified="false" />
1255           <para>Because many values can be stored in each key in the registry, you must use the <paramref name="name" /> parameter to specify the particular value you want to set.</para>
1256           <block subset="none" type="note">
1257             <para>A registry key can have one value that is not associated with any name. When this unnamed value is displayed in the registry editor, the string "(Default)" appears instead of a name. To set this unnamed value, specify either null or the empty string ("") for <paramref name="name" />.</para>
1258           </block>
1259           <para>In order to set values in a key, you must open the key with write access. After you have opened a key with write access, you can change any of the name/value pairs in that key.</para>
1260           <para>If the specified <paramref name="name" /> does not exist in the key, it is created, and the associated value is set to <paramref name="value" />.</para>
1261           <block subset="none" type="note">
1262             <para>Specifying the registry data type <see cref="F:Microsoft.Win32.RegistryValueKind.Unknown" /> is the same as using the <see cref="M:Microsoft.Win32.RegistryKey.SetValue(System.String,System.Object)" /> overload.</para>
1263           </block>
1264           <para>If the type of the specified <paramref name="value" /> does not match the specified <paramref name="valueKind" />, and the data cannot be converted, <see cref="T:System.ArgumentException" /> is thrown. For example, you can store a <see cref="T:System.Int64" /> as a <see cref="F:Microsoft.Win32.RegistryValueKind.DWord" />, but only if its value is less than the maximum value of a <see cref="T:System.Int32" />. You cannot store a single string value as a <see cref="F:Microsoft.Win32.RegistryValueKind.MultiString" />.</para>
1265           <block subset="none" type="note">
1266             <para>If boxed values are passed for <see cref="F:Microsoft.Win32.RegistryValueKind.DWord" /> or <see cref="F:Microsoft.Win32.RegistryValueKind.QWord" />, the conversion is done using the invariant culture.</para>
1267           </block>
1268           <block subset="none" type="note">
1269             <para>Do not expose <see cref="T:Microsoft.Win32.RegistryKey" /> objects in such a way that a malicious program could create thousands of meaningless subkeys or key/value pairs. For example, do not allow callers to enter arbitrary keys or values.</para>
1270           </block>
1271           <block subset="none" type="note">
1272             <para>On Windows 98 and Windows Millennium Edition the registry is not Unicode, and not all Unicode characters are valid for all code pages. A Unicode character that is invalid for the current code page is replaced by the best available match. No exception is thrown.</para>
1273           </block>
1274         </remarks>
1275         <summary>
1276           <attribution license="cc4" from="Microsoft" modified="false" />
1277           <para>Sets the value of a name/value pair in the registry key, using the specified registry data type.</para>
1278         </summary>
1279         <param name="name">
1280           <attribution license="cc4" from="Microsoft" modified="false" />The name of the value to be stored. </param>
1281         <param name="value">
1282           <attribution license="cc4" from="Microsoft" modified="false" />The data to be stored. </param>
1283         <param name="valueKind">
1284           <attribution license="cc4" from="Microsoft" modified="false" />The registry data type to use when storing the data. </param>
1285       </Docs>
1286     </Member>
1287     <Member MemberName="SubKeyCount">
1288       <MemberSignature Language="C#" Value="public int SubKeyCount { get; }" />
1289       <MemberSignature Language="ILAsm" Value=".property instance int32 SubKeyCount" />
1290       <MemberType>Property</MemberType>
1291       <AssemblyInfo>
1292         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
1293         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1294         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1295       </AssemblyInfo>
1296       <ReturnValue>
1297         <ReturnType>System.Int32</ReturnType>
1298       </ReturnValue>
1299       <Docs>
1300         <value />
1301         <remarks>
1302           <attribution license="cc4" from="Microsoft" modified="false" />
1303           <para>This property does not recursively count names. It only returns the count of names on the base level from which it was called.</para>
1304         </remarks>
1305         <summary>
1306           <attribution license="cc4" from="Microsoft" modified="false" />
1307           <para>Retrieves the count of subkeys of the current key.</para>
1308         </summary>
1309       </Docs>
1310     </Member>
1311     <Member MemberName="System.IDisposable.Dispose">
1312       <MemberSignature Language="C#" Value="void IDisposable.Dispose ();" />
1313       <MemberType>Method</MemberType>
1314       <ReturnValue>
1315         <ReturnType>System.Void</ReturnType>
1316       </ReturnValue>
1317       <Parameters />
1318       <Docs>
1319         <remarks>
1320           <attribution license="cc4" from="Microsoft" modified="false" />
1321           <para>This member is an explicit interface member implementation. It can be used only when the <see cref="T:Microsoft.Win32.RegistryKey" /> instance is cast to an <see cref="T:System.IDisposable" /> interface.</para>
1322         </remarks>
1323         <summary>
1324           <attribution license="cc4" from="Microsoft" modified="false" />
1325           <para>Releases all resources used by the <see cref="T:Microsoft.Win32.RegistryKey" />. </para>
1326         </summary>
1327       </Docs>
1328       <AssemblyInfo>
1329         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
1330         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1331       </AssemblyInfo>
1332     </Member>
1333     <Member MemberName="ToString">
1334       <MemberSignature Language="C#" Value="public override string ToString ();" />
1335       <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string ToString() cil managed" />
1336       <MemberType>Method</MemberType>
1337       <AssemblyInfo>
1338         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
1339         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1340         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1341       </AssemblyInfo>
1342       <ReturnValue>
1343         <ReturnType>System.String</ReturnType>
1344       </ReturnValue>
1345       <Parameters />
1346       <Docs>
1347         <returns>To be added.</returns>
1348         <remarks>
1349           <attribution license="cc4" from="Microsoft" modified="false" />
1350           <para>The return value includes the registry path of the specified key and the hexadecimal value for the key. The registry path includes the absolute root of the specified key, always starts at one of the base keys for the registry, for example, HKEY_LOCAL_MACHINE.</para>
1351         </remarks>
1352         <summary>
1353           <attribution license="cc4" from="Microsoft" modified="false" />
1354           <para>Retrieves a string representation of this key.</para>
1355         </summary>
1356       </Docs>
1357     </Member>
1358     <Member MemberName="ValueCount">
1359       <MemberSignature Language="C#" Value="public int ValueCount { get; }" />
1360       <MemberSignature Language="ILAsm" Value=".property instance int32 ValueCount" />
1361       <MemberType>Property</MemberType>
1362       <AssemblyInfo>
1363         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
1364         <AssemblyVersion>2.0.0.0</AssemblyVersion>
1365         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1366       </AssemblyInfo>
1367       <ReturnValue>
1368         <ReturnType>System.Int32</ReturnType>
1369       </ReturnValue>
1370       <Docs>
1371         <value />
1372         <remarks>
1373           <attribution license="cc4" from="Microsoft" modified="false" />
1374           <para>Each registry key has a default value that is not associated with any name. This unnamed value can be set by using the <see cref="Overload:Microsoft.Win32.RegistryKey.SetValue" /> method and specifying either null or the empty string ("") for <paramref name="name" />. If the default value has never been set, it does not contribute to the total count returned by the <see cref="P:Microsoft.Win32.RegistryKey.ValueCount" /> property; once it has been set, however, it is always counted.</para>
1375         </remarks>
1376         <summary>
1377           <attribution license="cc4" from="Microsoft" modified="false" />
1378           <para>Retrieves the count of values in the key.</para>
1379         </summary>
1380       </Docs>
1381     </Member>
1382     <Member MemberName="View">
1383       <MemberSignature Language="C#" Value="public Microsoft.Win32.RegistryView View { get; }" />
1384       <MemberSignature Language="ILAsm" Value=".property instance valuetype Microsoft.Win32.RegistryView View" />
1385       <MemberType>Property</MemberType>
1386       <AssemblyInfo>
1387         <AssemblyVersion>4.0.0.0</AssemblyVersion>
1388       </AssemblyInfo>
1389       <Attributes>
1390         <Attribute>
1391           <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
1392         </Attribute>
1393       </Attributes>
1394       <ReturnValue>
1395         <ReturnType>Microsoft.Win32.RegistryView</ReturnType>
1396       </ReturnValue>
1397       <Docs>
1398         <value>To be added.</value>
1399         <remarks>
1400           <attribution license="cc4" from="Microsoft" modified="false" />
1401           <para>On the 64-bit versions of Windows, portions of the registry are stored separately for 32-bit and 64-bit applications. There is a 32-bit view for 32-bit applications and a 64-bit view for 64-bit applications.</para>
1402           <para>Do not assume that the view always corresponds to the actual view of the <see cref="T:Microsoft.Win32.RegistryKey" />.</para>
1403         </remarks>
1404         <summary>
1405           <attribution license="cc4" from="Microsoft" modified="false" />
1406           <para>Gets the view that was used to create the registry key. </para>
1407         </summary>
1408       </Docs>
1409     </Member>
1410   </Members>
1411 </Type>