public static void SetValueString(UIntPtr key, string subkey, string valueName, string value, Wow64 wow64) { UIntPtr regKeyHandle; uint sam = (uint)(Rights.CreateSubKey | Rights.SetValue) + (uint)wow64; uint options = (uint)Options.NonVolatile; Disposition disposition; if (RegCreateKeyEx(key, subkey, 0, null, options, sam, IntPtr.Zero, out regKeyHandle, out disposition) != 0) { throw new Exception("Could not open or craete key"); } try { uint type = (uint)ValueType.String; uint lenBytesPlusNull = ((uint)value.Length + 1) * 2; var result = RegSetValueExW(regKeyHandle, valueName, 0, type, value, lenBytesPlusNull); if (result != 0) { throw new Exception(string.Format("Error {0} setting registry key '{1}{2}@{3}'='{4}'", result, key, subkey, valueName, value)); } } finally { RegCloseKey(regKeyHandle); } }
public static string GetValueString(UIntPtr key, string subkey, string valueName, Wow64 wow64) { UIntPtr regKeyHandle; uint sam = (uint)Rights.QueryValue + (uint)wow64; if (RegOpenKeyEx(key, subkey, 0, sam, out regKeyHandle) != 0) { return(null); } try { uint type; var sb = new StringBuilder(2048); uint cbData = (uint)sb.Capacity; if (RegQueryValueExW(regKeyHandle, valueName, 0, out type, sb, ref cbData) == 0) { return(sb.ToString()); } return(null); } finally { RegCloseKey(regKeyHandle); } }
public static string GetValueString (UIntPtr key, string subkey, string valueName, Wow64 wow64) { UIntPtr regKeyHandle; uint sam = (uint)Rights.QueryValue + (uint)wow64; if (RegOpenKeyEx (key, subkey, 0, sam, out regKeyHandle) != 0) return null; try { uint type; var sb = new StringBuilder (2048); uint cbData = (uint) sb.Capacity; if (RegQueryValueExW (regKeyHandle, valueName, 0, out type, sb, ref cbData) == 0) { return sb.ToString (); } return null; } finally { RegCloseKey (regKeyHandle); } }
public static void SetValueString (UIntPtr key, string subkey, string valueName, string value, Wow64 wow64) { UIntPtr regKeyHandle; uint sam = (uint)(Rights.CreateSubKey | Rights.SetValue) + (uint)wow64; uint options = (uint) Options.NonVolatile; Disposition disposition; if (RegCreateKeyEx (key, subkey, 0, null, options, sam, IntPtr.Zero, out regKeyHandle, out disposition) != 0) { throw new Exception ("Could not open or craete key"); } try { uint type = (uint)ValueType.String; uint lenBytesPlusNull = ((uint)value.Length + 1) * 2; var result = RegSetValueExW (regKeyHandle, valueName, 0, type, value, lenBytesPlusNull); if (result != 0) throw new Exception (string.Format ("Error {0} setting registry key '{1}{2}@{3}'='{4}'", result, key, subkey, valueName, value)); } finally { RegCloseKey (regKeyHandle); } }
public static IEnumerable <string> EnumerateSubkeys(UIntPtr key, string subkey, Wow64 wow64) { UIntPtr regKeyHandle; uint sam = (uint)Rights.Read + (uint)wow64; int r = RegOpenKeyEx(key, subkey, 0, sam, out regKeyHandle); if (r != 0) { yield break; } try { r = RegQueryInfoKey( hKey: regKeyHandle, lpClass: IntPtr.Zero, lpcchClass: IntPtr.Zero, lpReserved: IntPtr.Zero, lpcSubkey: out uint cSubkeys, lpcchMaxSubkeyLen: out uint cchMaxSubkeyLen, lpcchMaxClassLen: IntPtr.Zero, lpcValues: IntPtr.Zero, lpcchMaxValueNameLen: IntPtr.Zero, lpcbMaxValueLen: IntPtr.Zero, lpSecurityDescriptor: IntPtr.Zero, lpftLastWriteTime: IntPtr.Zero ); if (r != 0) { yield break; } var name = new char [cchMaxSubkeyLen + 1]; for (uint i = 0; i < cSubkeys; ++i) { var nameLen = (uint)name.Length; r = RegEnumKeyExW( hKey: regKeyHandle, dwIndex: i, lpName: name, lpcchName: ref nameLen, lpReserved: IntPtr.Zero, lpClass: IntPtr.Zero, lpcchClass: IntPtr.Zero, lpftLastWriteTime: IntPtr.Zero ); if (r != 0) { continue; } yield return(new string (name, 0, (int)nameLen)); } } finally { RegCloseKey(regKeyHandle); } }