首页 > 解决方案 > UnauthorizedAccessException:对路径的访问被拒绝

问题描述

作为使用Wix 3.XX的服务安装程序的一部分,我们一直在尝试加密连接字符串。在访问了 Stackoverflow 和其他一些社区的几个选项之后,我们选择分三个部分进行。

  1. 在第一部分安装服务的安装程序
  2. 在安装结束时,它会调用选择现有配置的连接位置的小型可执行文件,加密安装文件夹中的连接字符串并保存该配置。
  3. 清除加密可执行文件的.bat文件(基本上没有留下任何痕迹)

所有三个部分都可以很好地协调,但是当我尝试使用非提升权限(非管理员模式)在“程序文件”或“程序文件(x86) ”中安装加密可执行文件时,加密可执行文件失败。

调试给了我痕迹,这意味着安装程序对任何此类进程都是未经授权的。

这是执行此操作的代码片段:

1. var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = configPath };
2. var configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
3. var section = configuration.GetSection(sectionToEncrypt);
4. section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
5. section.SectionInformation.ForceSave = true;
6. configuration.Save(ConfigurationSaveMode.Modified);

到达第 6 行时,它返回给我一个错误:

System.Configuration.ConfigurationErrorsException
HResult=0x80131902
Inner Exception 1: 
UnauthorizedAccessException: 
Access to the path 'C:\Program Files (x86)\<AppDirectory>\5tkbxj1v.tmp' is denied.

对此的任何投入都将是亲切的。

在此先感谢您的帮助!

标签: c#.netwixwindows-installerinstallation

解决方案


不应修改 Program Files 文件夹中的文件,如果您的配置文件不能对于所有安装都是静态的,则应将它们放在其他文件夹中,例如AppData


推荐阅读