diff --git a/ShareX/Enums.cs b/ShareX/Enums.cs
index ac87c54c4..317988b7d 100644
--- a/ShareX/Enums.cs
+++ b/ShareX/Enums.cs
@@ -26,6 +26,9 @@ You should have received a copy of the GNU General Public License
using Newtonsoft.Json;
using System;
using System.ComponentModel;
+#if WindowsStore
+using Windows.ApplicationModel;
+#endif
namespace ShareX
{
@@ -275,11 +278,22 @@ public enum RegionCaptureType
}
#if !WindowsStore
- public enum StartupTaskState
+ public enum StartupState
{
- Disabled = 0,
- DisabledByUser = 1,
- Enabled = 2
+ Disabled,
+ DisabledByUser,
+ Enabled,
+ DisabledByPolicy,
+ EnabledByPolicy
+ }
+#else
+ public enum StartupState
+ {
+ Disabled = StartupTaskState.Disabled,
+ DisabledByUser = StartupTaskState.DisabledByUser,
+ Enabled = StartupTaskState.Enabled,
+ DisabledByPolicy = StartupTaskState.DisabledByPolicy,
+ EnabledByPolicy = StartupTaskState.EnabledByPolicy
}
#endif
}
\ No newline at end of file
diff --git a/ShareX/Forms/ApplicationSettingsForm.cs b/ShareX/Forms/ApplicationSettingsForm.cs
index 1b6437bf3..1321d6a7e 100644
--- a/ShareX/Forms/ApplicationSettingsForm.cs
+++ b/ShareX/Forms/ApplicationSettingsForm.cs
@@ -32,10 +32,6 @@ You should have received a copy of the GNU General Public License
using System.Threading.Tasks;
using System.Windows.Forms;
-#if WindowsStore
-using Windows.ApplicationModel;
-#endif
-
namespace ShareX
{
public partial class ApplicationSettingsForm : Form
@@ -264,12 +260,20 @@ private void UpdateStartWithWindows()
try
{
var state = StartupManagerSingletonProvider.CurrentStartupManager.State;
- cbStartWithWindows.Checked = state == StartupTaskState.Enabled;
+ cbStartWithWindows.Checked = state == StartupState.Enabled || state == StartupState.EnabledByPolicy;
- if (state == StartupTaskState.DisabledByUser)
+ if (state == StartupState.DisabledByUser)
{
cbStartWithWindows.Text = Resources.ApplicationSettingsForm_cbStartWithWindows_DisabledByUser_Text;
}
+ else if (state == StartupState.DisabledByPolicy)
+ {
+ cbStartWithWindows.Text = Resources.ApplicationSettingsForm_cbStartWithWindows_DisabledByPolicy_Text;
+ }
+ else if (state == StartupState.EnabledByPolicy)
+ {
+ cbStartWithWindows.Text = Resources.ApplicationSettingsForm_cbStartWithWindows_EnabledByPolicy_Text;
+ }
else
{
cbStartWithWindows.Enabled = true;
@@ -425,7 +429,7 @@ private void cbStartWithWindows_CheckedChanged(object sender, EventArgs e)
{
try
{
- StartupManagerSingletonProvider.CurrentStartupManager.State = cbStartWithWindows.Checked ? StartupTaskState.Enabled : StartupTaskState.Disabled;
+ StartupManagerSingletonProvider.CurrentStartupManager.State = cbStartWithWindows.Checked ? StartupState.Enabled : StartupState.Disabled;
UpdateStartWithWindows();
}
catch (Exception ex)
diff --git a/ShareX/Forms/FirstTimeConfigForm.cs b/ShareX/Forms/FirstTimeConfigForm.cs
index 8f82eb04e..45ae901d6 100644
--- a/ShareX/Forms/FirstTimeConfigForm.cs
+++ b/ShareX/Forms/FirstTimeConfigForm.cs
@@ -27,10 +27,6 @@ You should have received a copy of the GNU General Public License
using System;
using System.Windows.Forms;
-#if WindowsStore
-using Windows.ApplicationModel;
-#endif
-
namespace ShareX
{
public partial class FirstTimeConfigForm : BlackStyleForm
@@ -43,8 +39,8 @@ public FirstTimeConfigForm()
pbLogo.Image = ImageHelpers.ResizeImage(ShareXResources.Logo, 128, 128);
var state = StartupManagerSingletonProvider.CurrentStartupManager.State;
- cbRunStartup.Checked = state == StartupTaskState.Enabled;
- cbRunStartup.Enabled = state != StartupTaskState.DisabledByUser;
+ cbRunStartup.Checked = state == StartupState.Enabled || state == StartupState.EnabledByPolicy;
+ cbRunStartup.Enabled = state != StartupState.DisabledByUser && state != StartupState.DisabledByPolicy && state != StartupState.EnabledByPolicy;
cbShellContextMenuButton.Checked = IntegrationHelpers.CheckShellContextMenuButton();
cbSendToMenu.Checked = IntegrationHelpers.CheckSendToMenuButton();
@@ -67,7 +63,7 @@ private void cbRunStartup_CheckedChanged(object sender, EventArgs e)
{
if (loaded)
{
- StartupManagerSingletonProvider.CurrentStartupManager.State = cbRunStartup.Checked ? StartupTaskState.Enabled : StartupTaskState.Disabled;
+ StartupManagerSingletonProvider.CurrentStartupManager.State = cbRunStartup.Checked ? StartupState.Enabled : StartupState.Disabled;
}
}
diff --git a/ShareX/IntegrationHelpers.cs b/ShareX/IntegrationHelpers.cs
index 79869221c..58c6f5727 100644
--- a/ShareX/IntegrationHelpers.cs
+++ b/ShareX/IntegrationHelpers.cs
@@ -31,10 +31,6 @@ You should have received a copy of the GNU General Public License
using System.Text;
using System.Windows.Forms;
-#if WindowsStore
-using Windows.ApplicationModel;
-#endif
-
namespace ShareX
{
public static class IntegrationHelpers
@@ -401,7 +397,7 @@ public static void SteamShowInApp(bool showInApp)
public static void Uninstall()
{
- StartupManagerSingletonProvider.CurrentStartupManager.State = StartupTaskState.Disabled;
+ StartupManagerSingletonProvider.CurrentStartupManager.State = StartupState.Disabled;
CreateShellContextMenuButton(false);
CreateEditShellContextMenuButton(false);
CreateCustomUploaderExtension(false);
diff --git a/ShareX/Properties/Resources.Designer.cs b/ShareX/Properties/Resources.Designer.cs
index e9441cf07..f48b181ad 100644
--- a/ShareX/Properties/Resources.Designer.cs
+++ b/ShareX/Properties/Resources.Designer.cs
@@ -482,6 +482,15 @@ public static string ApplicationSettingsForm_cbLanguage_SelectedIndexChanged_Lan
}
}
+ ///
+ /// Looks up a localized string similar to Startup has been disabled by your organization.
+ ///
+ public static string ApplicationSettingsForm_cbStartWithWindows_DisabledByPolicy_Text {
+ get {
+ return ResourceManager.GetString("ApplicationSettingsForm_cbStartWithWindows_DisabledByPolicy_Text", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Startup has been disabled in Task Manager.
///
@@ -491,6 +500,15 @@ public static string ApplicationSettingsForm_cbStartWithWindows_DisabledByUser_T
}
}
+ ///
+ /// Looks up a localized string similar to Startup has been enabled by your organization.
+ ///
+ public static string ApplicationSettingsForm_cbStartWithWindows_EnabledByPolicy_Text {
+ get {
+ return ResourceManager.GetString("ApplicationSettingsForm_cbStartWithWindows_EnabledByPolicy_Text", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Run ShareX when Windows starts.
///
diff --git a/ShareX/Properties/Resources.resx b/ShareX/Properties/Resources.resx
index 72114a887..2bf5d1d1f 100644
--- a/ShareX/Properties/Resources.resx
+++ b/ShareX/Properties/Resources.resx
@@ -982,6 +982,12 @@ Middle click to close
..\Resources\mx.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ Startup has been disabled by your organization
+
+
+ Startup has been enabled by your organization
+
You must reopen ShareX for personal folder changes to take effect.
diff --git a/ShareX/StartupManagers/CentennialStartupManager.cs b/ShareX/StartupManagers/CentennialStartupManager.cs
index 488e3b160..41a46f1c9 100644
--- a/ShareX/StartupManagers/CentennialStartupManager.cs
+++ b/ShareX/StartupManagers/CentennialStartupManager.cs
@@ -26,7 +26,6 @@ You should have received a copy of the GNU General Public License
#if WindowsStore
using System;
-using System.Threading.Tasks;
using Windows.ApplicationModel;
namespace ShareX
@@ -36,16 +35,16 @@ public class CentennialStartupManager : IStartupManager
private const int StartupTargetIndex = 0;
private readonly StartupTask packageTask = StartupTask.GetForCurrentPackageAsync().GetAwaiter().GetResult()[StartupTargetIndex];
- public StartupTaskState State
+ public StartupState State
{
- get => packageTask.State;
+ get => (StartupState)packageTask.State;
set
{
- if (value == StartupTaskState.Enabled)
+ if (value == StartupState.Enabled)
{
packageTask.RequestEnableAsync().GetAwaiter().GetResult();
}
- else if (value == StartupTaskState.Disabled)
+ else if (value == StartupState.Disabled)
{
packageTask.Disable();
}
diff --git a/ShareX/StartupManagers/GenericStartupManager.cs b/ShareX/StartupManagers/GenericStartupManager.cs
index ff73c6f7d..52d78d537 100644
--- a/ShareX/StartupManagers/GenericStartupManager.cs
+++ b/ShareX/StartupManagers/GenericStartupManager.cs
@@ -35,34 +35,34 @@ public abstract class GenericStartupManager : IStartupManager
{
public abstract string StartupTargetPath { get; }
- public StartupTaskState State
+ public StartupState State
{
get
{
if (ShortcutHelpers.CheckShortcut(Environment.SpecialFolder.Startup, StartupTargetPath))
{
byte[] status = Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\StartupFolder",
- "ShareX.lnk", null) as byte[];
+ "ShareX.lnk", null) as byte[];
if (status != null && status.Length > 0 && status[0] == 3)
{
- return StartupTaskState.DisabledByUser;
+ return StartupState.DisabledByUser;
}
else
{
- return StartupTaskState.Enabled;
+ return StartupState.Enabled;
}
}
else
{
- return StartupTaskState.Disabled;
+ return StartupState.Disabled;
}
}
set
{
- if (value == StartupTaskState.Enabled || value == StartupTaskState.Disabled)
+ if (value == StartupState.Enabled || value == StartupState.Disabled)
{
- ShortcutHelpers.SetShortcut(value == StartupTaskState.Enabled, Environment.SpecialFolder.Startup, StartupTargetPath, "-silent");
+ ShortcutHelpers.SetShortcut(value == StartupState.Enabled, Environment.SpecialFolder.Startup, StartupTargetPath, "-silent");
}
else
{
diff --git a/ShareX/StartupManagers/IStartupManager.cs b/ShareX/StartupManagers/IStartupManager.cs
index 5c54fbc2d..6909481a0 100644
--- a/ShareX/StartupManagers/IStartupManager.cs
+++ b/ShareX/StartupManagers/IStartupManager.cs
@@ -23,14 +23,10 @@ You should have received a copy of the GNU General Public License
#endregion License Information (GPL v3)
-#if WindowsStore
-using Windows.ApplicationModel;
-#endif
-
namespace ShareX
{
public interface IStartupManager
{
- StartupTaskState State { get; set; }
+ StartupState State { get; set; }
}
}
\ No newline at end of file