8

我需要加密/解密 app.config 以及 web.config 文件中的自定义部分。我读到 aspnet_regiis 可用于 web.config,但我需要以编程方式执行此操作。

打开 mappedExeConfiguration 后,我指定一个部分,如下所示:

ConfigurationSection connStrings = config.AppSettings;

加密/解密 AppSettings 部分。

如何指定自定义部分的名称?当我在 configurationSection 对象之后键入我的自定义部分的名称时,intelli-sense 无法识别它。(它只识别几个众所周知的部分)

PS 在我的函数中,我需要将自定义部分名称作为字符串参数。

例子:

例如

<Configuration>
   <MyCustomTag> 
       <... data /> 
   </MyCustomTag> 
 </Configuration>

其中 MyCustomTag 是我需要加密/解密的部分。

4

3 回答 3

4

我通过使用在http://www.a2zmenu.com/Blogs/CSharp/How-to-encrypt-configuration-file.aspx找到的代码实现了这一点

我会粘贴我的代码,但基本上它与该网页上的代码几乎相同,除了更改应用程序名称。

编辑:对于自定义部分,我不确定因为我不需要使用它,但您可以在下面的行中探索配置对象为您提供的内容。

Configuration config = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "MyAppName.exe");

这是我的整个 UpdateKey() 方法,我现在意识到我从网页中改编了一点。也许它有帮助。

public static void UpdateKey(string key, string newValue) 
{
    Configuration config = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "MyAppName.exe");
    config.AppSettings.Settings[key].Value = newValue;
    config.Save();
} 

然后在我保存了我的密钥后,我打电话给

EncryptAppSettings("appSettings");

也许您也可以调整参数值以适应那里。

于 2013-05-13T10:21:37.237 回答
2

从 VS 2010 的 CommandPromt 调用加密命令:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis  -pef "connectionStrings" "YOUR_PROJECT_NAME" -prov "DataProtectionConfigurationProvider"

解密:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis  -pdf "connectionStrings" "YOUR_PROJECT_NAME"
于 2013-05-13T09:52:15.353 回答
0

要加密,请使用HaGever在 is answer 中发布的命令行。

这个问题有一些示例代码可以从代码中读取 app.config 文件。该代码不起作用,因为用于解密 app.config 的计算机上未安装加密密钥。

于 2013-05-13T10:06:38.303 回答