public static Boolean FixProfileList(string userSID)
{
string regkey = ROOT_PROFILE_KEY + "\\" + userSID;
UIntPtr key = UIntPtr.Zero;
UIntPtr key_bak = UIntPtr.Zero;
Boolean ret = false;
key = Abstractions.WindowsApi.pInvokes.RegistryOpenKey(Abstractions.WindowsApi.pInvokes.structenums.baseKey.HKEY_LOCAL_MACHINE, regkey);
if (key == UIntPtr.Zero)
{
key_bak = Abstractions.WindowsApi.pInvokes.RegistryOpenKey(Abstractions.WindowsApi.pInvokes.structenums.baseKey.HKEY_LOCAL_MACHINE, regkey + ".bak");
if (key_bak != UIntPtr.Zero)
{
key = Abstractions.WindowsApi.pInvokes.RegistryCreateKey(Abstractions.WindowsApi.pInvokes.structenums.baseKey.HKEY_LOCAL_MACHINE, regkey);
if (key != UIntPtr.Zero)
{
ret = Abstractions.WindowsApi.pInvokes.RegistryCopyKey(key_bak, null, key);
if (ret)
{
if (Abstractions.WindowsApi.pInvokes.RegistryCloseKey(key_bak))
{
Abstractions.WindowsApi.pInvokes.RegistryDeleteTree(Abstractions.WindowsApi.pInvokes.structenums.baseKey.HKEY_LOCAL_MACHINE, regkey + ".bak");
}
}
}
}
else
{
ret = true;
}
}
else
{
ret = true;
}
if (key_bak != UIntPtr.Zero)
{
Abstractions.WindowsApi.pInvokes.RegistryCloseKey(key_bak);
}
if (key != UIntPtr.Zero)
{
Abstractions.WindowsApi.pInvokes.RegistryCloseKey(key);
}
return ret;
}