1 2010-07-25 Carlos Alberto Cortez <calberto.cortez@gmail.com>
3 * UnixRegistryApi.cs: From the static ctor of KeyHandler remove the
4 volatile keys directory if the last registered boot time has changed.
5 This way we *actually* have our volatile keys removed if the system as
8 2010-07-19 Carlos Alberto Cortez <calberto.cortez@gmail.com>
10 * UnixRegistryApi.cs: Remove the in-memmory approach to volatile keys,
11 as it becomes trickier to handle deep hiearchies, subkeys and values
12 in some scenarios. So for now we keep them in disk, we in an
13 alternative directory, so we can cleam them properly later.
15 2010-07-13 Carlos Alberto Cortez <calberto.cortez@gmail.com>
17 * RegistryKey.cs: Call the proper UnixRegistryApi.CreateSubKey overload.
18 * UnixRegistryApi.cs: Implement basic support for volatile keys, by
19 storing them in memory instead of disk. We lack the support to have
20 them available to other processes - and given the fact that a
21 workaround would be gross, just don't implement that now.
23 2010-07-11 Carlos Alberto Cortez <calberto.cortez@gmail.com>
25 * RegistryKey.cs: Add 4.0 CreateSubKey overloads taking a RegistryOptions
27 * IRegistryApi.cs: Add a new overload for CreateSubKey for the 4.0
28 profile. Not nice, but better than to change the signature for each
30 * Win32RegistryApi.cs: Properly recognize a handle where a volatile
32 * UnixRegistryApi.cs: Stubbed.
34 2010-07-09 Carlos Alberto Cortez <calberto.cortez@gmail.com>
36 * Win32RegistryApi.cs: Use RegCreateKeyEx instead of RegCreateKey, as
37 we need it to further support both the missing bits and the 4.0
40 2010-02-08 Carlos Alberto Cortez <calberto.cortez@gmail.com>
42 * UnixRegistryApi.cs: When retrieving the registry keys from file in a
43 unix system, if the value returned by a SecurityElement is null,
44 use String.Empty, since at this point we know that this registry key
45 *exists* and *cannot* have a null value, as specified in the public
49 2009-11-21 Miguel de Icaza <miguel@novell.com>
51 * RegistryKey.cs: Implement a GetValueKind and a handful of
54 2009-04-25 Sebastien Pouliot <sebastien@ximian.com>
56 * *.cs: Exclude the files for the NET_2_1 profile, since they are
57 unneeded and adds a bunch (23) [SecuritySafeCritical] to audit for
60 2008-02-25 Robert Jordan <robertj@gmx.net>
62 * Win32RegistryApi.cs (ToString): Don't emit the handle value
64 See http://msdn2.microsoft.com/en-us/netframework/aa497241.aspx.
66 2008-02-01 Gert Driesen <drieseng@users.sourceforge.net>
68 * RegistryKey.cs: Added missing checks on length of subkey and value
69 names. On 2.0 profile, allow subkey <= 255 characters. Modified
70 ArgumentNullException argument names to match MS.
71 * UnixRegistryApi.cs: In SetValue (string, object, RegistryValueKind),
72 use a zero-length string for name if it is null. In OpenSubKey,
73 respect value of writable argument when creating well-known subkey.
74 Fixes bug #357883. Removed argument names for ArgumentException's to
77 2008-01-15 Zoltan Varga <vargaz@gmail.com>
79 * RegistryKey.cs: Fix some argument names to be consistent with MS.
81 2007-10-13 kevin.fitzgerald@soarce.us
83 * UnixRegistryApi.cs: Escape the strings before passing them to
84 SecurityElement. This fixes bug #322839
86 2007-08-30 Marek Habersack <mhabersack@novell.com>
88 * UnixRegistryApi.cs: properly retrieve values of type
91 2007-08-13 Gert Driesen <drieseng@users.sourceforge.net>
93 * RegistryKeyPermissionCheck.cs: Do not include in 1.0 profile.
94 Removed extra using directive and empty lines.
96 2007-05-01 Dick Porter <dick@ximian.com>
98 * RegistryKeyPermissionCheck.cs: Not serializable
100 2007-04-30 Dick Porter <dick@ximian.com>
105 * RegistryValueKind.cs:
106 * RegistryKeyPermissionCheck.cs: Updated for 2.0 profile
108 2006-10-29 Miguel de Icaza <miguel@novell.com>
110 * UnixRegistryApi.cs (KeyHandler.MachineStore): Add support for
111 loading/storing values from the system registry, instead of having
112 the system ones be user-based.
114 (KeyHandler, Load): turn IO exceptions into Security exceptions.
116 2006-09-03 Gert Driesen <drieseng@users.sourceforge.net>
118 * IRegistryApi.cs: Added OpenRemoteBaseKey method.
119 * Win32ResultCode.cs: Added code for win32 error 53.
120 * RegistryKey.cs: Implemented support for OpenRemoteBaseKEy on
121 Windows. To achieve this, the handle of the remote hive must be
122 stored separately from the RegistryHive value. Removed isRoot field, as
123 we now determine whether we're a root key (hive) by checking if hive
124 is not null. Added internal ctor for registry hives that takes a
125 RegistryHive, a key handle and a bool to indicate whether its a remote
126 hive. Renamed Data field to handle and added internal property to
127 access it. Throw ObjectDisposedException in ToString if key is
128 closed/disposed. Added Hive property, which is used in UnixRegistryApi.
129 Added GetHiveName method which translates a RegistryHive value to its
131 * Win32RegistryApi.cs: Added pinvoke for RegConnectRegistry. GetHandle
132 no longer needs to know whether the key refers to a hive (base key)
133 or not. Implemented OpenRemoteBaseKey.
134 * UnixRegistryApi.cs: Added OpenRemoteBaseKey implementation which
135 always throws NotImplementedException.
136 * Registry.cs: The key name of the base key no longer needs to be
137 passed to the ctor, as it's looked up in the ctor itself. This avoids
138 having a different logical for local or remote base keys.
140 2006-08-23 Gert Driesen <drieseng@users.sourceforge.net>
142 * Win32RegistryApi.cs: Use a StringBuilder instead of byte [] for
143 RegEnumKey. Fixed issue in GetSubKeyNames where buffer was not cleared
144 while iterating over subkeys.
146 2006-08-20 Gert Driesen <drieseng@users.sourceforge.net>
148 * RegistryValueOptions.cs: Add the real one.
150 2006-08-20 Atsushi Enomoto <atsushi@ximian.com>
152 * RegistryValueOptions.cs : build fix, easier than reverting all.
154 2006-08-20 Gert Driesen <drieseng@users.sourceforge.net>
156 * IRegistryApi.cs: Modified GetValue to take RegistryValueOptions enum
157 and removed obsolete return_default_value argument.
158 * RegistryKey.cs: Added missing ComVisible attribute on SetValue.
159 Use new GetValue method on IRegistryApi that takes RegistryValueOptions
160 enum. Added GetValue overload that takes RegistryValueOptions (2.0).
161 * Win32RegistryApi.cs: Modified GetValue to take RegistryValueOptions
162 enum, and removed obsolete returnDefaultValue argument. Added support
163 for ExpandString value type. Do no expand if DoNotExpand... is set.
164 * UnixRegistryApi.cs: Modified KeyHandler.GetValue to take
165 RegistryValueOptions enum, and do no expand environment variables in
166 an ExpandString if DoNotExpandEnvironmentNames is set. Modified
167 UnixRegistryApi.GetValue to take RegistryValueOptions enum, and
168 removed obsolete return_default_value argument.
170 2006-08-14 Gert Driesen <drieseng@users.sourceforge.net>
172 * UnixRegistryApi.cs: Undo change for new eventlog implementation that
173 was not rolled back earlier this week, and which does not make sense
174 without that implementation anyway.
176 2006-08-14 Gert Driesen <drieseng@users.sourceforge.net>
178 * Win32ResultCode.cs: Added error code for attempting to perform an
179 operation on registry key that is marked for deletion.
180 * RegistryKey.cs: Keep writable state. Automatically flush changes to
181 disk when closing key (to match MS). Allow values to be set on root
182 keys. Throw UnauthorizedAccessException when attempting to set/delete
183 value or create/delete sub key on registry key that is openen
184 read-only. Fixed DecodeString to only strip trailing nullchars (as
186 * Win32RegistryApi.cs: For a key that is marked for deletion, return
187 null when attempting to get a value of that key (and no default value
188 was specified) or open a subkey. Throw an IOException when attempting
189 to perform the following operation on a key that is marked for
192 2) obtain SubKeyCount
195 5) obtain value names
196 and ignore deleting a value. Ignore flushing changes of a key and
197 closing a when the key is closed.
198 * UnixRegistryApi.cs: Maintain handler cache per directory instead of
199 caching registry keys. This allows both a single key to be in memory
200 in both read-only and read-write key configuration, while sharing the
201 KeyHandler. Use case-insensitive hashtable for mapping directory to
202 KeyHandler. Added support for keys that have been marked for deletion
203 by another operation (eg. DeleteSubKeyTree). Allow different file store
204 for machine-level and user-level hives (but have them use the same
205 file store, needs further discussion). Allow KeyHandler failure when
206 create directory, or saving values file to bubble up. Do not save
207 values file when key is marked for deletion. Encapsulate access to
208 values collection. When setting value with null name, use zero-length
209 name instead. Treat key name case-insensitive in DeleteKey to match
212 2006-08-14 Miguel de Icaza <miguel@novell.com>
214 * RegistryValueKind.cs: Make this public in 2.0, and rename from
217 * Win32RegistryApi.cs: Include version to check for version;
218 Eliminate old internal enum, and instead use the new 2.0 enum.
220 * UnixRegistryApi.cs: Add support for typed versions of values.
222 Add support for ExpandString.
224 * Registry.cs (SetValue): implement version with type arguments.
226 2006-08-13 Miguel de Icaza <miguel@novell.com>
228 * Registry.cs (SetValue, GetValue): implement.
230 * UnixRegistryApi.cs (KeyHandler.LoadKey, KeyHandler.Save): Add
233 (KeyHandler.Save): Do not save the entries if they have been
234 deleted/dropped. Fixes a crash.
236 (UnixRegistryApi.DeleteKey): bug fix, call ToUnix on the keyname.
238 2006-08-12 Gert Driesen <drieseng@users.sourceforge.net>
240 * Registry.cs: Fixed copy/paste bug.
242 2006-08-11 Gert Driesen <drieseng@users.sourceforge.net>
244 * UnixRegistryApi.cs: Consider HKLM\SYSTEM\CurrentControlSet\Services\
245 EventLog a wellknown key. Required for new EventLog implementation.
246 Added RegistryStore property.
248 2006-06-06 Miguel de Icaza <miguel@novell.com>
250 * UnixRegistryApi.cs: Do not crash if there are no values stored.
252 2006-05-28 Gert Driesen <drieseng@users.sourceforge.net>
254 * UnixRegistryApi.cs: GetSubKeyNames returns only names of subkeys,
255 not the qualified name. Fixes bug #78519.
257 2006-04-20 Gert Driesen <drieseng@users.sourceforge.net>
259 * UnixRegistryApi.cs: In KeyHandler.SetValue, immediately convert
260 instances of non-native registry types (meaning int, string, string[]
261 or byte[]) to string. This avoids returning an instance of a non-native
262 registry type in calls to UnixRegistryApi.GetValue. Allow instances of
263 non-native registry types in UnixRegistryApi.SetValue. Fixes bug #78132.
265 2006-04-18 Gert Driesen <drieseng@users.sourceforge.net>
267 * UnixRegistryApi.cs: Only consider the "software" subkey a well-known
268 key if the parent is either HKEY_USERS or HKEY_LOCAL_MACHINE.
270 2006-04-15 Robert Jordan <robertj@gmx.net>
272 * UnixRegistryApi.cs (DeleteValue): Avoid crash, fixes bug
273 #77772. Patch reapplied, since r57881 was not applied correctly.
275 2006-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
277 * UnixRegistryApi.cs: create well-known keys when trying to open them.
279 2006-03-12 Robert Jordan <robertj@gmx.net>
281 * UnixRegistryApi.cs (DeleteValue): Avoid crash, fixes bug
284 2006-01-14 Robert Jordan <robertj@gmx.net>
286 * RegistryKey.cs: Added internal IsRoot accessor.
287 * Win32RegistryApi.cs: Fixed access to RegistryKey.Data.
288 Fixes bug #77212. Thanks to Don Edvalson (don@edvalson.net)
289 for spotting this out.
291 2005-12-02 Atsushi Enomoto <atsushi@ximian.com>
293 * Win32RegistryApi.cs : fixed invalid cast. Now mono is not to blame
294 for not being able to run NAnt on Windows.
296 2005-11-12 Miguel de Icaza <miguel@novell.com>
298 * RegistryKey.cs: Add support for a Registry on Unix based on
299 files under ~/.mono/registry.
301 Vastly refactored the code, reworked the interface between the
302 frontend and the backends.
304 If "RegistryKey" was not sealed, things could have been a lot
307 2005-01-31 mei (mei@work.email.ne.jp)
309 * RegistryKey.cs: Fixes bug 70451: When the key doesn't exist, and
310 the default value is not specified, it is necessary to return
311 null. and DecodeString function's bug is fixed.
313 2004-04-10 Gert Driesen (driesen@users.sourceforge.net)
315 * RegistryKey.cs: explicit implementation of IDisposable to match
318 2004-03-17 Jackson Harper <jackson@ximian.com>
320 * Win32RegistryApi.cs: Fix typo. Patch by Gert Driesen.
322 2004-03-03 Jackson Harper <jackson@ximian.com>
324 * Win32RegistryApi.cs: Specify entry points.
326 2004-03-03 Jackson Harper <jackson@ximian.com>
328 * Win32RegistryApi.cs: New file - pinvokes to the win32
329 registry. Patch by Erik LeBel.
330 * IRegistryApi.cs: New file - Interface to a registry backend
331 (win32 on windows, no implementation on unix). This interface will
332 probably change when we write a Linux backend.
333 * Win32ResultCode.cs: New file - Win32 result codes needed to
334 check pinvoke. Patch by Erik LeBel.
335 * Registry.cs: Create the keys. Patch by Erik LeBel.
336 * RegistryKey.cs: Implement. Patch by Erik LeBel.
338 2003-12-27 Nick Drochak <ndrochak@gol.com>
340 * RegistryKey.cs: Add some missing overloads.
342 2003-02-10 Nick Drochak <ndrochak@gol.com>
344 * Registry.cs: Class should be sealed and have a private default ctor.
346 2002-11-28 Alejandro Sánchez Acosta <raciel@es.gnu.org>
348 * Registry.cs: Added missed field.
350 2002-11-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
352 * RegistryHive.cs: patch from Jackson Harper that fixes compilation.
354 2002-11-27 DennisHayes <dennish@raytek.com>
356 * checkin for Alexandre Pigolkine (pigolkine@gmx.de) with minor changes
357 * needed for System.Windows.Forms
361 * added files, fully implmented?
364 * added more iplmentation
366 2002-11-20 Nick Drochak <ndrochak@gol.com>
368 * RegistryKey.cs: Fix typo.