Files
Dec2017-Script-Dump/mscorlib/Microsoft/Win32/UnixRegistryApi.cs
T
2026-06-04 11:42:34 +02:00

214 lines
6.3 KiB
C#

using System;
using System.Globalization;
using System.IO;
namespace Microsoft.Win32
{
// Token: 0x0200007B RID: 123
internal class UnixRegistryApi : IRegistryApi
{
// Token: 0x06000752 RID: 1874 RVA: 0x0001709C File Offset: 0x0001529C
private static string ToUnix(string keyname)
{
if (keyname.IndexOf('\\') != -1)
{
keyname = keyname.Replace('\\', '/');
}
return keyname.ToLower();
}
// Token: 0x06000753 RID: 1875 RVA: 0x000170CC File Offset: 0x000152CC
private static bool IsWellKnownKey(string parentKeyName, string keyname)
{
return (parentKeyName == Registry.CurrentUser.Name || parentKeyName == Registry.LocalMachine.Name) && 0 == string.Compare("software", keyname, true, CultureInfo.InvariantCulture);
}
// Token: 0x06000754 RID: 1876 RVA: 0x0001711C File Offset: 0x0001531C
public RegistryKey CreateSubKey(RegistryKey rkey, string keyname)
{
return this.CreateSubKey(rkey, keyname, true);
}
// Token: 0x06000755 RID: 1877 RVA: 0x00017128 File Offset: 0x00015328
public RegistryKey OpenRemoteBaseKey(RegistryHive hKey, string machineName)
{
throw new NotImplementedException();
}
// Token: 0x06000756 RID: 1878 RVA: 0x00017130 File Offset: 0x00015330
public RegistryKey OpenSubKey(RegistryKey rkey, string keyname, bool writable)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
if (keyHandler == null)
{
return null;
}
RegistryKey registryKey = keyHandler.Probe(rkey, UnixRegistryApi.ToUnix(keyname), writable);
if (registryKey == null && UnixRegistryApi.IsWellKnownKey(rkey.Name, keyname))
{
registryKey = this.CreateSubKey(rkey, keyname, writable);
}
return registryKey;
}
// Token: 0x06000757 RID: 1879 RVA: 0x00017180 File Offset: 0x00015380
public void Flush(RegistryKey rkey)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, false);
if (keyHandler == null)
{
return;
}
keyHandler.Flush();
}
// Token: 0x06000758 RID: 1880 RVA: 0x000171A4 File Offset: 0x000153A4
public void Close(RegistryKey rkey)
{
KeyHandler.Drop(rkey);
}
// Token: 0x06000759 RID: 1881 RVA: 0x000171AC File Offset: 0x000153AC
public object GetValue(RegistryKey rkey, string name, object default_value, RegistryValueOptions options)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
if (keyHandler == null)
{
return default_value;
}
if (keyHandler.ValueExists(name))
{
return keyHandler.GetValue(name, options);
}
return default_value;
}
// Token: 0x0600075A RID: 1882 RVA: 0x000171E0 File Offset: 0x000153E0
public void SetValue(RegistryKey rkey, string name, object value)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
if (keyHandler == null)
{
throw RegistryKey.CreateMarkedForDeletionException();
}
keyHandler.SetValue(name, value);
}
// Token: 0x0600075B RID: 1883 RVA: 0x0001720C File Offset: 0x0001540C
public void SetValue(RegistryKey rkey, string name, object value, RegistryValueKind valueKind)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
if (keyHandler == null)
{
throw RegistryKey.CreateMarkedForDeletionException();
}
keyHandler.SetValue(name, value, valueKind);
}
// Token: 0x0600075C RID: 1884 RVA: 0x00017238 File Offset: 0x00015438
public int SubKeyCount(RegistryKey rkey)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
if (keyHandler == null)
{
throw RegistryKey.CreateMarkedForDeletionException();
}
return Directory.GetDirectories(keyHandler.Dir).Length;
}
// Token: 0x0600075D RID: 1885 RVA: 0x00017268 File Offset: 0x00015468
public int ValueCount(RegistryKey rkey)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
if (keyHandler == null)
{
throw RegistryKey.CreateMarkedForDeletionException();
}
return keyHandler.ValueCount;
}
// Token: 0x0600075E RID: 1886 RVA: 0x00017290 File Offset: 0x00015490
public void DeleteValue(RegistryKey rkey, string name, bool throw_if_missing)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
if (keyHandler == null)
{
return;
}
if (throw_if_missing && !keyHandler.ValueExists(name))
{
throw new ArgumentException("the given value does not exist");
}
keyHandler.RemoveValue(name);
}
// Token: 0x0600075F RID: 1887 RVA: 0x000172D0 File Offset: 0x000154D0
public void DeleteKey(RegistryKey rkey, string keyname, bool throw_if_missing)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
if (keyHandler != null)
{
string text = Path.Combine(keyHandler.Dir, UnixRegistryApi.ToUnix(keyname));
if (Directory.Exists(text))
{
Directory.Delete(text, true);
KeyHandler.Drop(text);
}
else if (throw_if_missing)
{
throw new ArgumentException("the given value does not exist");
}
return;
}
if (!throw_if_missing)
{
return;
}
throw new ArgumentException("the given value does not exist");
}
// Token: 0x06000760 RID: 1888 RVA: 0x00017340 File Offset: 0x00015540
public string[] GetSubKeyNames(RegistryKey rkey)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
DirectoryInfo directoryInfo = new DirectoryInfo(keyHandler.Dir);
DirectoryInfo[] directories = directoryInfo.GetDirectories();
string[] array = new string[directories.Length];
for (int i = 0; i < directories.Length; i++)
{
DirectoryInfo directoryInfo2 = directories[i];
array[i] = directoryInfo2.Name;
}
return array;
}
// Token: 0x06000761 RID: 1889 RVA: 0x0001739C File Offset: 0x0001559C
public string[] GetValueNames(RegistryKey rkey)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
if (keyHandler == null)
{
throw RegistryKey.CreateMarkedForDeletionException();
}
return keyHandler.GetValueNames();
}
// Token: 0x06000762 RID: 1890 RVA: 0x000173C4 File Offset: 0x000155C4
public string ToString(RegistryKey rkey)
{
return rkey.Name;
}
// Token: 0x06000763 RID: 1891 RVA: 0x000173CC File Offset: 0x000155CC
private RegistryKey CreateSubKey(RegistryKey rkey, string keyname, bool writable)
{
KeyHandler keyHandler = KeyHandler.Lookup(rkey, true);
if (keyHandler == null)
{
throw RegistryKey.CreateMarkedForDeletionException();
}
return keyHandler.Ensure(rkey, UnixRegistryApi.ToUnix(keyname), writable);
}
}
}