В рамках программы установки службы, использующей Wix 3.XX , мы пытались зашифровать строку подключения.После посещения нескольких опций в Stackoverflow и некоторых других сообществах, мы решили сделать это в трех частях.
- Установщик, который устанавливает службу в первой части
- В концепри установке он вызывает небольшой исполняемый файл, который выбирает место подключения существующего конфига, шифрует строку подключения в папке установки и сохраняет этот конфиг.
- A
.bat
файл, который очищает исполняемый файл для шифрования (в основномне оставляя следов)
Все три части хорошо работают с координацией, но исполняемый файл шифрования завершается неудачно, когда я пытаюсь установить его в " 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.
Любые входы для этого будут любезны.
Заранее спасибо за помощь!