Opc.Ua.Configuration.ConfigUtils.GetLogFileDirectory C# (CSharp) Method

GetLogFileDirectory() public static method

Gets the log file directory and ensures it is writeable.
public static GetLogFileDirectory ( ) : string
return string
        public static string GetLogFileDirectory()
        {
            // try the program data directory.
            string logFileDirectory = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
            logFileDirectory += "\\OPC Foundation\\Logs";

            try
            {
                // create the directory.
                if (!Directory.Exists(logFileDirectory))
                {
                    Directory.CreateDirectory(logFileDirectory);
                }

                // ensure everyone has write access to it.
                List<ApplicationAccessRule> rules = new List<ApplicationAccessRule>();

                ApplicationAccessRule rule = new ApplicationAccessRule();

                rule.IdentityName = WellKnownSids.Users;
                rule.Right = ApplicationAccessRight.Configure;
                rule.RuleType = AccessControlType.Allow;

                rules.Add(rule);

                rule = new ApplicationAccessRule();

                rule.IdentityName = WellKnownSids.NetworkService;
                rule.Right = ApplicationAccessRight.Configure;
                rule.RuleType = AccessControlType.Allow;

                rules.Add(rule);

                rule = new ApplicationAccessRule();

                rule.IdentityName = WellKnownSids.LocalService;
                rule.Right = ApplicationAccessRight.Configure;
                rule.RuleType = AccessControlType.Allow;

                rules.Add(rule);

                ApplicationAccessRule.SetAccessRules(logFileDirectory, rules, false);
            }
            catch (Exception)
            {
                // try the MyDocuments directory instead.
                logFileDirectory = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
                logFileDirectory += "OPC Foundation\\Logs";

                if (!Directory.Exists(logFileDirectory))
                {
                    Directory.CreateDirectory(logFileDirectory);
                }
            }

            return logFileDirectory;
        }