C#写了一个Winform程序,用Access和XML存的数据,不想别人直接查看数据(Access设的密码根本没用),想把.mdb的数据库文件换成自定义扩展名的文件类型且按自己的方式才能打开,请问大家可不可以这样做?可以的话如何实现?我是看到网上的很多共享软件都有自定义的文件格式。

解决方案 »

  1.   

    文件序列化的方法:
     Console.WriteLine("Writing With Stream");            XmlSerializer serializer =
                new XmlSerializer(typeof(OrderedItem));
                OrderedItem i = new OrderedItem();
                i.ItemName = "Widget";
                i.Description = "Regular Widget";
                i.Quantity = 10;
                i.UnitPrice = (decimal)2.30;
                i.Calculate();            // Create a FileStream to write with.
                Stream writer = new FileStream(filename, FileMode.Create);
                // Serialize the object, and close the TextWriter
                serializer.Serialize(writer, i);
                writer.Close();
      

  2.   

    搂主改名称是不行的,还是可以通过“打开方式”找到Access程序将其打开的。最好的办法就是在程序中压缩mdb文件,并且是加密压缩
    然后使用的时候,程序再解压缩到内存中,然后再打开就可以了。
    有关.NET中压缩,解压缩可以使用开源的SharpZipLib组件,也是支持加密压缩的,搂主可以到官方下载。但是这只是一把锁而已,楼主如果还不想让别人反编译你的程序看到压缩密码,那么你还可以再再加一把锁:发布时加密你的程序。
      

  3.   

    参考:
    http://www.cnblogs.com/zhuweisky/archive/2008/08/25/234282.html
      

  4.   

    你想怎么定义都可以,如加文件头,加标志位(针对2进制文件)或者先存成xml格式,然后转为二进制,接着加密或者存成txt格式比如CSV,tab分割等,然后转为二进制,接着加密你得考虑,你准备如何解析回来
      

  5.   

    楼主也可以从Access出发,Access的确很容易看到密码,好像有一办法可以对Access的加密效果更好,就是就算打开Access了,也无法打开表,具体不知道怎么做了.