private void ConfigureFileAccess(ApplicationConfiguration configuration)
{
Utils.Trace(Utils.TraceMasks.Information, "Configuring file access.");
List<ApplicationAccessRule> rules = GetAccessRules();
// apply access rules to the excutable file.
try
{
if (InstallConfig.SetExecutableFilePermissions)
{
ApplicationAccessRule.SetAccessRules(InstallConfig.ExecutableFile, rules, true);
}
}
catch (Exception e)
{
Utils.Trace(e, "Could not set executable file permissions.");
}
// apply access rules to the configuration file.
try
{
if (InstallConfig.SetConfigurationFilePermisions)
{
ApplicationAccessRule.SetAccessRules(configuration.SourceFilePath, rules, true);
}
}
catch (Exception e)
{
Utils.Trace(e, "Could not set configuration file permissions.");
}
// apply access rules to the private key file.
try
{
X509Certificate2 certificate = configuration.SecurityConfiguration.ApplicationCertificate.Find(true);
if (certificate != null)
{
ICertificateStore store = configuration.SecurityConfiguration.ApplicationCertificate.OpenStore();
store.SetAccessRules(certificate.Thumbprint, rules, true);
}
}
catch (Exception e)
{
Utils.Trace(e, "Could not set private key file permissions.");
}
}
#endregion