diff --git a/Ryujinx/Program.cs b/Ryujinx/Program.cs
index 5fca093387..1f417f5a6c 100644
--- a/Ryujinx/Program.cs
+++ b/Ryujinx/Program.cs
@@ -14,6 +14,8 @@ namespace Ryujinx
     {
         public static string Version { get; private set; }
 
+        public static string ConfigurationPath { get; set; }
+		
         static void Main(string[] args)
         {
             Toolkit.Init(new ToolkitOptions
@@ -40,19 +42,33 @@ namespace Ryujinx
             // Initialize Discord integration
             DiscordIntegrationModule.Initialize();
 
-            string configurationPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json");
+            string localConfigurationPath  = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json");
+            string globalConfigurationPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Ryujinx", "Config.json");
 
             // Now load the configuration as the other subsystems are now registered
-            if (File.Exists(configurationPath))
+            if (File.Exists(localConfigurationPath))
             {
-                ConfigurationFileFormat configurationFileFormat = ConfigurationFileFormat.Load(configurationPath);
+                ConfigurationPath = localConfigurationPath;
+
+                ConfigurationFileFormat configurationFileFormat = ConfigurationFileFormat.Load(localConfigurationPath);
+
+                ConfigurationState.Instance.Load(configurationFileFormat);
+            }
+            else if (File.Exists(globalConfigurationPath))
+            {
+                ConfigurationPath = globalConfigurationPath;
+
+                ConfigurationFileFormat configurationFileFormat = ConfigurationFileFormat.Load(globalConfigurationPath);
+
                 ConfigurationState.Instance.Load(configurationFileFormat);
             }
             else
             {
                 // No configuration, we load the default values and save it on disk
+                ConfigurationPath = globalConfigurationPath;
+
                 ConfigurationState.Instance.LoadDefault();
-                ConfigurationState.Instance.ToFileFormat().SaveConfig(configurationPath);
+                ConfigurationState.Instance.ToFileFormat().SaveConfig(globalConfigurationPath);
             }
 
             Profile.Initialize();
diff --git a/Ryujinx/Ryujinx.csproj b/Ryujinx/Ryujinx.csproj
index 9bd2de66fc..25eb8ff477 100644
--- a/Ryujinx/Ryujinx.csproj
+++ b/Ryujinx/Ryujinx.csproj
@@ -90,7 +90,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <None Update="Config.json">
+    <None Update="Config.json" Condition="'$(Configuration)' == 'Debug' OR '$(Configuration)' == 'Profile Debug'">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Update="RPsupported.dat">
diff --git a/Ryujinx/Ui/MainWindow.cs b/Ryujinx/Ui/MainWindow.cs
index e9e79d7762..51b40b9468 100644
--- a/Ryujinx/Ui/MainWindow.cs
+++ b/Ryujinx/Ui/MainWindow.cs
@@ -1116,7 +1116,7 @@ namespace Ryujinx.Ui
 
         public static void SaveConfig()
         {
-            ConfigurationState.Instance.ToFileFormat().SaveConfig(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json"));
+            ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
         }
     }
 }