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;
}