internal static int TransformStringValue(Win32Api.RegValueType type, IntPtr pSrcData, int cbSrcData, Data dst, StringTransformer transformer, StringFormat dstFormat) { string value = ""; if (pSrcData != IntPtr.Zero) { value = PtrToString(pSrcData, cbSrcData / Data.BytesPerChar(dstFormat)); } bool removedNullChar = false; if ((type == Win32Api.RegValueType.REG_SZ || type == Win32Api.RegValueType.REG_EXPAND_SZ) && value.EndsWith("\0")) { value = value.Remove(value.Length - 1); removedNullChar = true; } value = transformer(value); if (removedNullChar) { value += "\0"; } return(dst.FillWithString(new ManagedString(value), dstFormat, Data.NullCharHandling.NotAddingIfNotPresent)); }
public void SetValue( string lpValueName, Win32Api.RegValueType dwType, IntPtr lpData, int cbData) { int result; if (!DoUni2AnsiConversion || !DataTransformer.IsStringType(dwType)) { result = OffRegHive.CatchException(() => key_.SetValueUnmanaged(lpValueName, (OffregLib.RegValueType)dwType, lpData, cbData)); hive_.MarkAsModified(); Win32Exception.CheckResult(result); return; } string str = Marshal.PtrToStringAnsi(lpData, cbData); using (HGlobalPtr pStr = new HGlobalPtr(Marshal.StringToHGlobalUni(str))) { result = OffRegHive.CatchException(() => key_.SetValueUnmanaged(lpValueName, (OffregLib.RegValueType)dwType, pStr.Ptr, cbData * sizeof(char))); hive_.MarkAsModified(); Win32Exception.CheckResult(result); } }
internal static void CopyValues(this VirtualRegistry virtualRegistry, VirtualKey sourceKey, KeyInfo sourceKeyInfo, VirtualKey destinationKey) { using (HGlobalPtr lpValueName = new HGlobalPtr((sourceKeyInfo.MaxValueNameLength + 1) * sizeof(char)), lpcValueName = new HGlobalPtr(sizeof(int)), lpReserved = new HGlobalPtr(IntPtr.Zero), lpdwType = new HGlobalPtr(sizeof(int)), lpvData = new HGlobalPtr(sourceKeyInfo.MaxValueLength), lpcData = new HGlobalPtr(sizeof(int))) { for (uint i = 0; i < sourceKeyInfo.ValuesNumber; ++i) { Marshal.WriteInt32(lpcValueName.Ptr, unchecked ((int)sourceKeyInfo.MaxValueNameLength) + 1); Marshal.WriteInt32(lpcData.Ptr, unchecked ((int)sourceKeyInfo.MaxValueLength)); sourceKey.EnumValue(i, lpValueName.Ptr, lpcValueName.Ptr, lpReserved.Ptr, lpdwType.Ptr, lpvData.Ptr, lpcData.Ptr); Win32Api.RegValueType valueType = (Win32Api.RegValueType)Marshal.ReadInt32(lpdwType.Ptr); int currentValueLength = Marshal.ReadInt32(lpcData.Ptr); int currentValueNameLength = Marshal.ReadInt32(lpcValueName.Ptr); string currentValueName = Marshal.PtrToStringUni(lpValueName.Ptr, currentValueNameLength); destinationKey.SetValue(null, currentValueName, 0, valueType, lpvData.Ptr, currentValueLength); } } }
public void SetValue( string lpValueName, Win32Api.RegValueType dwType, IntPtr lpData, int cbData) { SetValue(null, lpValueName, 0, dwType, lpData, cbData); }
public void SetValue( string lpValueName, Win32Api.RegValueType dwType, IntPtr lpData, int cbData) { Win32Exception.CheckResult( Win32Api.RegSetKeyValue(handle_, null, lpValueName, dwType, lpData, cbData)); }
internal void SetValue( string lpSubKey, string lpValueName, int Reserved, Win32Api.RegValueType dwType, IntPtr lpData, int cbData) { ApplyNotOnlyReadOperation(lpSubKey, new KeySecurity(Win32Api.KeySecurity.KEY_SET_VALUE), keyImpl => { keyImpl.SetValue(lpValueName, dwType, lpData, cbData); return(true); }); }
internal static extern Int32 ORSetValue( IntPtr hKey, String lpValueName, Win32Api.RegValueType dwType, IntPtr lpData, int cbData);
internal static bool IsStringType(Win32Api.RegValueType type) { return(type == Win32Api.RegValueType.REG_SZ || type == Win32Api.RegValueType.REG_MULTI_SZ || type == Win32Api.RegValueType.REG_EXPAND_SZ); }
public void SetValue(string lpValueName, Win32Api.RegValueType dwType, IntPtr lpData, int cbData) { decorated_.SetValue(lpValueName, dwType, lpData, cbData); }