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