public RegistryKey Probe (RegistryKey rkey, string extra, bool writable)
{
RegistryKey rk = null;
lock (typeof (KeyHandler)){
string f = Path.Combine (Dir, extra);
KeyHandler kh = (KeyHandler) dir_to_handler [f];
if (kh != null) {
rk = new RegistryKey (kh, CombineName (rkey,
extra), writable);
key_to_handler [rk] = kh;
} else if (Directory.Exists (f) || VolatileKeyExists (f)) {
kh = new KeyHandler (rkey, f);
rk = new RegistryKey (kh, CombineName (rkey, extra),
writable);
dir_to_handler [f] = kh;
key_to_handler [rk] = kh;
}
return rk;
}
}