diff --git a/src/Privatezilla/Locales/Locale.Designer.cs b/src/Privatezilla/Locales/Locale.Designer.cs
index 1ae1499..5020fd0 100644
--- a/src/Privatezilla/Locales/Locale.Designer.cs
+++ b/src/Privatezilla/Locales/Locale.Designer.cs
@@ -19,7 +19,7 @@ namespace Privatezilla.Locales {
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Locale {
@@ -1335,6 +1335,24 @@ namespace Privatezilla.Locales {
}
}
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Disable safeguards for Feature Updates ähnelt.
+ ///
+ internal static string settingsUpdatesDisableSafeguards {
+ get {
+ return ResourceManager.GetString("settingsUpdatesDisableSafeguards", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Microsoft uses diagnostic data to determine whether devices that use Windows Update are ready for a feature update in order to ensure a smooth experience.\nWhen Microsoft determines a device is not ready to update due to a known issue, a safeguard hold (also known as a compatibility hold or update block) is generated to delay the device's upgrade and protect the end-user experience.\nThis setting will opt out of safeguard protections allowing you to bypass any feature upgrade blocks. ähnelt.
+ ///
+ internal static string settingsUpdatesDisableSafeguardsInfo {
+ get {
+ return ResourceManager.GetString("settingsUpdatesDisableSafeguardsInfo", resourceCulture);
+ }
+ }
+
///
/// Sucht eine lokalisierte Zeichenfolge, die Disable forced Windows updates ähnelt.
///
diff --git a/src/Privatezilla/Locales/Locale.resx b/src/Privatezilla/Locales/Locale.resx
index a95bb45..02b00ff 100644
--- a/src/Privatezilla/Locales/Locale.resx
+++ b/src/Privatezilla/Locales/Locale.resx
@@ -677,6 +677,12 @@ Add translation credits here!
This setting called "TargetReleaseVersionInfo" prevents Windows 10 feature updates from being installed until the specified version reaches the end of support.\nIt will specify your currently used Windows 10 version as the target release version of Windows 10 that you wish the system to be on (supports only Pro and enterprise versions).
Settings > Updates
+
+ Disable safeguards for Feature Updates
+
+
+ Microsoft uses diagnostic data to determine whether devices that use Windows Update are ready for a feature update in order to ensure a smooth experience.\nWhen Microsoft determines a device is not ready to update due to a known issue, a safeguard hold (also known as a compatibility hold or update block) is generated to delay the device's upgrade and protect the end-user experience.\nThis setting will opt out of safeguard protections allowing you to bypass any feature upgrade blocks.
+
Disable forced Windows updates
Settings > Updates
diff --git a/src/Privatezilla/MainWindow.cs b/src/Privatezilla/MainWindow.cs
index 59024bc..db0be4f 100644
--- a/src/Privatezilla/MainWindow.cs
+++ b/src/Privatezilla/MainWindow.cs
@@ -201,6 +201,7 @@ namespace Privatezilla
new SettingNode(new Setting.Updates.DisableUpdates()),
new SettingNode(new Setting.Updates.DisableUpdatesSharing()),
new SettingNode(new Setting.Updates.BlockMajorUpdates()),
+ new SettingNode(new Setting.Updates.DisableSafeguards()),
});
// Settings > Gaming
diff --git a/src/Privatezilla/Privatezilla.csproj b/src/Privatezilla/Privatezilla.csproj
index 33cc538..f64aede 100644
--- a/src/Privatezilla/Privatezilla.csproj
+++ b/src/Privatezilla/Privatezilla.csproj
@@ -145,6 +145,7 @@
+
diff --git a/src/Privatezilla/Properties/AssemblyInfo.cs b/src/Privatezilla/Properties/AssemblyInfo.cs
index 97b84be..46dcab9 100644
--- a/src/Privatezilla/Properties/AssemblyInfo.cs
+++ b/src/Privatezilla/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.41.10")]
-[assembly: AssemblyFileVersion("0.41.10")]
+[assembly: AssemblyVersion("0.42.0")]
+[assembly: AssemblyFileVersion("0.42.0")]
diff --git a/src/Privatezilla/Settings/Cortana/DisableCortana.cs b/src/Privatezilla/Settings/Cortana/DisableCortana.cs
index 3b4d63f..254f1a0 100644
--- a/src/Privatezilla/Settings/Cortana/DisableCortana.cs
+++ b/src/Privatezilla/Settings/Cortana/DisableCortana.cs
@@ -6,6 +6,7 @@ namespace Privatezilla.Setting.Cortana
internal class DisableCortana : SettingBase
{
private const string CortanaKey = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Windows Search";
+ private const string CortanaIconKey = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
private const int DesiredValue = 0;
public override string ID()
@@ -21,7 +22,8 @@ namespace Privatezilla.Setting.Cortana
public override bool CheckSetting()
{
return !(
- RegistryHelper.IntEquals(CortanaKey, "AllowCortana", DesiredValue)
+ RegistryHelper.IntEquals(CortanaKey, "AllowCortana", DesiredValue) &&
+ RegistryHelper.IntEquals(CortanaIconKey, "ShowCortanaButton", DesiredValue)
);
}
@@ -30,6 +32,7 @@ namespace Privatezilla.Setting.Cortana
try
{
Registry.SetValue(CortanaKey, "AllowCortana", DesiredValue, RegistryValueKind.DWord);
+ Registry.SetValue(CortanaIconKey, "ShowCortanaButton", DesiredValue, RegistryValueKind.DWord);
return true;
}
catch
@@ -43,6 +46,7 @@ namespace Privatezilla.Setting.Cortana
try
{
Registry.SetValue(CortanaKey, "AllowCortana", 1, RegistryValueKind.DWord);
+ Registry.SetValue(CortanaIconKey, "ShowCortanaButton", 1, RegistryValueKind.DWord);
return true;
}
catch
diff --git a/src/Privatezilla/Settings/Updates/DisableSafeguards.cs b/src/Privatezilla/Settings/Updates/DisableSafeguards.cs
new file mode 100644
index 0000000..1fdb00d
--- /dev/null
+++ b/src/Privatezilla/Settings/Updates/DisableSafeguards.cs
@@ -0,0 +1,57 @@
+using Microsoft.Win32;
+using Privatezilla.Locales;
+
+namespace Privatezilla.Setting.Updates
+{
+ internal class DisableSafeguards : SettingBase
+ {
+ private const string SharingKey = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate";
+ private const int DesiredValue = 1;
+
+ public override string ID()
+ {
+ return Locale.settingsUpdatesDisableSafeguards;
+ }
+
+ public override string Info()
+ {
+ return Locale.settingsUpdatesDisableSafeguardsInfo.Replace("\\n", "\n");
+ }
+
+ public override bool CheckSetting()
+ {
+ return !(
+ RegistryHelper.IntEquals(SharingKey, "DisableWUfBSafeguards", DesiredValue)
+ );
+ }
+
+ public override bool DoSetting()
+ {
+ try
+ {
+ Registry.SetValue(SharingKey, "DisableWUfBSafeguards", DesiredValue, RegistryValueKind.DWord);
+ return true;
+ }
+ catch
+ { }
+
+ return false;
+ }
+
+ public override bool UndoSetting()
+ {
+ try
+ {
+ var RegKey = Registry.LocalMachine.OpenSubKey(@"Software\Policies\Microsoft\Windows\WindowsUpdate", true);
+ RegKey.DeleteValue("DisableWUfBSafeguards");
+
+ return true;
+ }
+ catch
+ { }
+
+ return false;
+ }
+
+ }
+}
\ No newline at end of file