【发布时间】:2018-06-26 07:02:14
【问题描述】:
作为使用 Wix 3.XX 的服务安装程序的一部分,我们一直在尝试加密连接字符串。 在访问了 Stackoverflow 和其他一些社区的几个选项之后,我们选择了分三个部分进行。
- 第一部分安装服务的安装程序
- 在安装结束时,它会调用选择现有配置的连接位置的小型可执行文件,加密安装文件夹中的连接字符串并保存该配置。
- 一个
.bat文件,用于清除加密的可执行文件(基本上没有留下任何痕迹)
所有三个部分都可以很好地协调,但是当我尝试在“Program Files”或“Program Files (x86) 中安装加密可执行文件时,它会失败" 使用非提升权限(非管理员模式)。
调试给了我痕迹,这意味着安装程序未经授权可以执行任何此类进程。
这是执行此操作的代码 sn-p:
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.
对此的任何投入都将是亲切的。
提前感谢您的帮助!
【问题讨论】:
-
如果安装程序在非管理员模式下运行,它应该无法在第一步将二进制文件安装到 ProgramFiles...
-
是的,我完全清楚这一点。您能帮我了解如何在 wix 中以管理员模式运行它吗?
标签: c# .net wix windows-installer installation