1

正如您从标题中可以理解的那样,我修改了 Settings.cs 文件。添加了一些属性,一些代码到构造函数(公共 Settings())并覆盖了 Save() 函数。但它是一个非常重要的类,所以我知道你有什么样的后果当您修改 IDE 生成的文件,尤其是 .designers 时要面对。它不是设计器,而是 IDE 生成的内部密封部分,我想知道它是否 100% 安全?

internal sealed partial class Settings
{
    public System.Data.SqlClient.SqlConnection AppDbConnection
    {
      get 
      {
        if (_AppDbConnection == null)
        {
          try
          {
            _AppDbConnection = new System.Data.SqlClient.SqlConnection(_ConnectionString);
            _AppDbConnection.Open();
          }
          catch (System.Exception ex) { throw ex; }
        }
        return _AppDbConnection;
      }
    }

    private System.Data.SqlClient.SqlConnection _AppDbConnection;
    private string _ConnectionString;


public override void Save()
{
  System.IO.FileInfo fi = new System.IO.FileInfo(System.Windows.Forms.Application.StartupPath + "\\Settings.dat");
  System.IO.FileStream fs = new System.IO.FileStream(fi.FullName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
  System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, System.Text.Encoding.GetEncoding("iso-8859-9"));
  try { sw.Write(Helper.BinarySerializer.ToBinary(_SettingsBase)); }
  catch (System.Exception ex) { throw ex; }
  finally { sw.Close(); fs.Close(); }
  base.Save();
}


    public Settings()
    {
      try
      {
        System.IO.FileInfo fi = new System.IO.FileInfo(System.Windows.Forms.Application.StartupPath + "\\Settings.dat");
        if (fi.Exists)
        {
          System.IO.FileStream fs = new System.IO.FileStream(fi.FullName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
          System.IO.StreamReader sr = new System.IO.StreamReader(fs, System.Text.Encoding.GetEncoding("iso-8859-9"));
          string data = sr.ReadToEnd();
          if (data != "")
          {
_SettingsBase = (AppCode.SettingsBase)Helper.BinarySerializer.BinaryTo(data);
            _ConnectionString = Helper.Crypto.DecryptString(_SettingsBase.ConnectionString, "");
}
4

2 回答 2

1

如果您的添加位于不是由某些代码生成工具创建的单独文件中,那么 IDE 不会覆盖您的更改(只是不要将其命名为以 *.designer.cs 结尾的东西,以防万一)。 所以这至少对 IDE 的代码生成是安全的。

不要编辑由 Visual Studio 生成文件(这些文件通常在顶部有一条评论,警告你)。

像这样的自动生成的文件是将类声明为部分的主要原因之一,这样您就可以在另一个文件中扩展它,而不必担心您的更改会被覆盖。

注意:该连接字符串中的任何敏感数据都不安全

于 2012-06-21T09:22:36.797 回答
0

知道它是否 100% 安全?

100% 不安全。设计师更改 = 文件被丢弃。

制作另一个文件,部分,在那里添加你的代码。对本文件中代码的任何更改都是不安全的,并且将会丢失。

等待发生的事故。

于 2012-06-21T09:33:04.100 回答