VisualStudio安装程序未显示

时间:2014-10-18 17:26:46

标签: c# windows forms visual-studio

我已经安装了VS2013 Professional,制作了一个应用程序并希望部署它,但问题是,“Visual Installer”似乎不存在,我不想要“ClickOnce”。

还有一件事是数据库信息在app.config中,我怎么能让它看到没有人看到db信息?

1 个答案:

答案 0 :(得分:0)

关于加密app.config文件的第二个问题的答案非常简单易用:

受保护的配置提供程序有助于加密配置文件的各个部分,以保护应用程序的敏感信息。这将导致攻击者难以获取敏感信息。 .NET框架提供了两种受保护的配置提供程序:

  1. RSAProtectedConfigurationProvider:这使用RSACryptoServiceProviderto加密配置部分
  2. DPAPIProtectedConfigurationProvider:这使用Windows数据保护API(DPAPI)加密配置部分。

    static void Main(string[] args)
    {
        string userNameWithoutEncryption = ConfigurationManager.AppSettings["username"];
        EncryptAppSettings("appSettings");
        string userNameWithEncrytionApplied = ConfigurationManager.AppSettings["username"];
    }
    
    
    
    private static void EncryptAppSettings(string section)
    {
        Configuration objConfig = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "AppKeyEncryption.exe");
        AppSettingsSection objAppsettings = (AppSettingsSection)objConfig.GetSection(section);
        if (!objAppsettings.SectionInformation.IsProtected)
        {
            objAppsettings.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
            objAppsettings.SectionInformation.ForceSave = true;
            objConfig.Save(ConfigurationSaveMode.Modified);
        }
    }
    
    
    private static string GetAppPath()
    {
        System.Reflection.Module[] modules = System.Reflection.Assembly.GetExecutingAssembly().GetModules();
        string location = System.IO.Path.GetDirectoryName(modules[0].FullyQualifiedName);
        if ((location != "") && (location[location.Length - 1] != '\\'))
            location += '\\';
        return location;
    }
    
  3. 要解密app.config文件,您需要调用此方法:

        private static void DecryptAppSettings(string section)
        {
            Configuration objConfig = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "AppKeyEncryption.exe");
            AppSettingsSection objAppsettings = (AppSettingsSection)objConfig.GetSection(section);
            if (objAppsettings.SectionInformation.IsProtected)
            {
                objAppsettings.SectionInformation.UnprotectSection();
                objAppsettings.SectionInformation.ForceSave = true;
                objConfig.Save(ConfigurationSaveMode.Modified);
            }
        }
    

    在上面的部分中描述了加密配置文件以保护密码等敏感信息的方法。现在,如果我们想要在一段时间之后更改密钥值密码,因为我们的配置文件已加密,我们无法轻松更新密码。不用担心.NET框架提供了这样做的方法,如下所示:

        private static void UpdateKey(string newValue)
        {
            ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
            configFile.ExeConfigFilename = ConfigurationManager.AppSettings["configPath"];
            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
            config.AppSettings.Settings["password"].Value = newValue;
            config.Save();
        }
    

    有关详细信息,请在此处找到此解决方案并自行测试:http://www.a2zmenu.com/blogs/csharp/how-to-encrypt-configuration-file.aspx

    我希望这有助于你为我工作!