UnauthorizedAccessException:拒绝访问路径

问题描述 投票:2回答:5

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

  1. 在第一部分中安装服务的安装程序
  2. 安装结束时,它会调用小的可执行文件,该可执行文件选择现有配置的连接位置,对安装文件夹中的连接字符串进行加密,然后保存该配置。
  3. 一个.bat文件,清除了用于加密的可执行文件(基本上不留痕迹)
  4. 这三个部分都可以很好地配合使用,但是当我尝试使用非提升的权限将加密的可执行文件安装到“ Program Files

”或“ Program Files(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.

对此的任何投入都会很客气。

提前感谢您的帮助!

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

c# .net wix windows-installer installer
5个回答
1
投票

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


1
投票

InstallExecuteSequence


0
投票

如果问题实际上是由在非管理模式下运行的小型可执行文件引起的,则可以通过在其应用程序清单(app.manifest)中将requestedExecutionLevel设置为requireAdministrator来解决。


0
投票

有重复其他答案的风险:


0
投票

为wix试图安装的项目打开项目属性

。>>

转到安全

© www.soinside.com 2019 - 2024. All rights reserved.