我正在编写一个应用程序,需要按特定顺序在一个键中写入注册表值。同时,其他应用程序也可能在同一时间写入该键。
有没有一种方法可以暂时锁定注册表键进行写入操作,以避免多个进程同时写入该注册表键,导致数值混乱/顺序错误?
例如,我需要写入HKCU\Software\Company\Product\
下面已经包含以下数值:
Start1
="abc"
Start2
="def"
Start3
="ghi"
因为最后一个是Start3
,所以我需要创建Start4
。
问题是,如果另一个进程同时运行,并检测到Start3
是最后一个,则会覆盖我刚创建的Start4
(因为由于并发性,它看不到它)。
有什么好的方法可以防止这种情况发生?
我无法控制哪些(或多少)应用程序正在写入此键,因此无法要求它们暂停等任何操作...
我正在寻找类似下面的伪代码:
Registry.Lock("HKCU\Software\Company\Product\");
Registry.Write("Start4", "jkl");
Registry.Unlock("HKCU\Software\Company\Product\");
RegOpenKeyTransacted
。 - Jim Rhodes