[DllImport("coredll.dll")]
public static extern int RegCreateKeyEx(
UIntPtr hKey, string lpSubKey, uint dwReserved, string lpClass,
uint dwOptions, int samDesired, IntPtr lpSecurityAttributes,
out IntPtr phkResult, out RegistryDispositionValue lpdwDisposition);
[Flags]
enum RegistryDispositionValue : uint
{
REG_CREATED_NEW_KEY = 0x00000001,
REG_OPENED_EXISTING_KEY = 0x00000002
}
The .NET Compact Framework does not contain a HandleRef type, so it may be necessary to call GC.KeepAlive after calling this function if the calling class wraps the hKey parameter as an unmanaged resource.
C#:
public UIntPtr HKEY_CLASSES_ROOT = (UIntPtr)0x80000000;
public const int REG_OPTION_NON_VOLATILE = 0;
:::
int iResult;
IntPtr ipKey = IntPtr.Zero;
string strRegKeyPath;
int iDisposition;
iResult = RegCreateKeyEx(HKEY_CLASSES_ROOT, strRegKeyPath, 0,
null, REG_OPTION_NON_VOLATILE, 0, IntPtr.Zero, out ipKey,
out iDisposition);
// Z.F.Zeynal
public enum RootRegKeys : uint
{
HKEY_CLASSES_ROOT = 0x8000000,
HKEY_CURRENT_USER = 0x80000001,
HKEY_LOCAL_MACHINE = 0x80000002,
HKEY_USERS = 0x80000003
};
public enum RegValueTypes
{
REG_DWORD = 4,
REG_SZ = 1
};
private uint CreateKey(RootRegKeys rrk, string Path)
{
uint nKey = 0;
uint nDisposition =0;
int rez = RegCreateKeyEx ((uint) rrk,Path,0,String.Empty,0,0,0,ref nKey,ref nDisposition);
if (rez != 0) throw new Exception ("Can't create key");
return nKey; //Key handle
}
CF V2.0
Microsoft.Win32.Registry.LocalMachine.CreateSubKey(SubKey as string)