diff --git a/CHANGELOG.md b/CHANGELOG.md
index ed2f268..84f43c0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Added CultureInfo extensions for converting between 12 hour and 24 hour time formatting
- Added environment methods for setting the current date and time
- Added BinarySearch extension method for all IList types
+ - Added PathUtils methods to get ProgramData directory
### Changed
- The Root Config path in Net Standard will now be the ICD.Connect folder in the current environments ProgramData directory
diff --git a/ICD.Common.Utils/PathUtils.cs b/ICD.Common.Utils/PathUtils.cs
index 7faa121..b9fbd72 100644
--- a/ICD.Common.Utils/PathUtils.cs
+++ b/ICD.Common.Utils/PathUtils.cs
@@ -85,6 +85,37 @@ namespace ICD.Common.Utils
}
}
+ ///
+ /// Returns the absolute path to the program data directory.
+ ///
+ ///
+ [PublicAPI]
+ public static string ProgramDataPath { get { return Join(RootConfigPath, ProgramDataDirectory); } }
+
+ ///
+ /// Returns the name of the program data directory.
+ /// This directory contains runtime program data that should be retained through deployments.
+ ///
+ public static string ProgramDataDirectory
+ {
+ get
+ {
+ switch (IcdEnvironment.RuntimeEnvironment)
+ {
+ case IcdEnvironment.eRuntimeEnvironment.SimplSharp:
+ case IcdEnvironment.eRuntimeEnvironment.SimplSharpPro:
+ case IcdEnvironment.eRuntimeEnvironment.Standard:
+ return string.Format("Program{0:D2}Data", ProgramUtils.ProgramNumber);
+
+ case IcdEnvironment.eRuntimeEnvironment.SimplSharpProMono:
+ return "ProgramData";
+
+ default:
+ throw new ArgumentOutOfRangeException();
+ }
+ }
+ }
+
///
/// Returns the absolute path to the common configuration directory.
///