c# - UnauthorizedAccessException:对路径的访问被拒绝
问题描述
作为使用Wix 3.XX的服务安装程序的一部分,我们一直在尝试加密连接字符串。在访问了 Stackoverflow 和其他一些社区的几个选项之后,我们选择分三个部分进行。
- 在第一部分安装服务的安装程序
- 在安装结束时,它会调用选择现有配置的连接位置的小型可执行文件,加密安装文件夹中的连接字符串并保存该配置。
- 清除加密可执行文件的
.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.
对此的任何投入都将是亲切的。
在此先感谢您的帮助!
解决方案
不应修改 Program Files 文件夹中的文件,如果您的配置文件不能对于所有安装都是静态的,则应将它们放在其他文件夹中,例如AppData