public static Unit OpenRestartDialog() { var temporaryRegistryValue = TemporaryRegistryValue.NewTemporaryRegistryValue(Registry.CurrentUser, @"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Start_PowerButtonAction", RegistryValueKind.DWord, 4); return(temporaryRegistryValue.Match(value => { using (value) { var shutdownVsb = new StringBuilder(); shutdownVsb.AppendLine("dim oShell"); shutdownVsb.AppendLine("set oShell = CreateObject(\"Shell.Application\")"); shutdownVsb.AppendLine("oShell.ShutdownWindows"); shutdownVsb.AppendLine("set oShell = nothing"); F.RunVbScript(shutdownVsb.ToString()); Task.Delay(1000).Wait();//Wait a little before removing temporary registry value } return Unit.Default; }, exception => { Logging.DefaultLogger.Error($"Failed to change Start_PowerButtonAction. {exception.ToExceptionMessage()}"); return Unit.Default; })); }
private void ReleaseUnmanagedResources() { TemporaryRegistryValue.ReleaseTemporaryRegistryValue(_baseKey, _subKeyPath, _valueName, _existingValue, _existingValueKind); }