0

在 Windows 8 中,如果您更改注册表,这些更改不会立即出现在磁盘上。在这里找到了对这种行为的解释:http: //support.microsoft.com/kb/2784761

如果要更改此行为,可以使用 RegFlushKey 函数

问题是如何使用它?私有静态只读 IntPtr HKEY_LOCAL_MACHINE = new IntPtr(-2147483646);

[DllImport("advapi32.dll", SetLastError = true)]
public static extern int RegFlushKey(IntPtr hKey);

static void Main(string[] args)
{
    RegFlushKey(HKEY_LOCAL_MACHINE);
}

这是我试图实现它的方式,但是在此代码注册表更改之后不在文件系统上。

如果我做错了什么,请指出我

4

1 回答 1

0

基于pInvoke 网站

[DllImport("Advapi32.dll", EntryPoint = "RegFlushKey")]
public static extern int RegFlushKey(IntPtr hKey);

const UInt32 HKEY_CLASSES_ROOT = 0x80000000;
const UInt32 HKEY_CURRENT_USER = 0x80000001;
const UInt32 HKEY_LOCAL_MACHINE = 0x80000002;
const UInt32 HKEY_USERS = 0x80000003;

public static void CommitRegistry()
{
    IntPtr hkeyLocalMachine = new IntPtr(unchecked((int)HKEY_LOCAL_MACHINE));
    RegFlushKey(hkeyLocalMachine);
}
于 2014-02-25T15:15:09.413 回答