本帖最后由 linuxyf 于 2009-06-23 17:33:44 编辑

解决方案 »

  1.   

    将一份或多份文件复制到另一个位置。COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]
         [+ source [/A | /B] [+ ...]] [destination [/A | /B]]  source       指定要复制的文件。
      /A           表示一个 ASCII 文本文件。
      /B           表示一个二进位文件。
      /D           允许解密要创建的目标文件
      destination  为新文件指定目录和/或文件名。
      /V           验证新文件写入是否正确。
      /N           复制带有非 8dot3 名称的文件时,
                   尽可能使用短文件名。
      /Y           不使用确认是否要改写现有目标文件
                   的提示。
      /-Y          使用确认是否要改写现有目标文件
                   的提示。
      /Z           用可重新启动模式复制已联网的文件。命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。
    这可能会被命令行上的 /-Y 替代。除非 COPY
    命令是在一个批文件脚本中执行的,默认值应为
    在改写时进行提示。
    要附加文件,请为目标指定一个文件,为源指定
    数个文件(用通配符或 file1+file2+file3 格式)。
      

  2.   

    我想你是不是说在程序中调用dos命令实现所要求的功能.在VB中可以用shell 
      

  3.   

    我来解释一下 /d 的作用, 如果一个文件(NTFS格式),设置了它的加密属性(右键选中文件-->属性-->General属性页上点击Advanced按钮-->选中 "Encrypt contents to secure data"),这个时候如果使用copy命令(不带参数)把该文件拷贝到本地硬盘上另一个地方(NTFS格式),那么拷贝的结果也是一个加密文件,若拷贝到非NTFS格式的盘上或者拷贝到网络的共享目录中,则会发生拷贝异常,说是不能加密该文件。这种情况下,我们可以使用copy /d把该文件拷贝到非NTFS格式的盘上或者拷贝到网络的共享目录中,结果是明文文件。
      

  4.   

    我想通过程序实现类似于copy /d的功能,但不能通过调用外部命令copy /d来实现。
      

  5.   

    这样做的后果是,如果我把一个ems加密的文件拷贝到本地硬盘(NTFS格式)上时,结果变成明文,而不像源文件一样是密文。
      

  6.   

    如果是本地,源文件是什么样的,拷贝结果也要一样,如果是网络或者非ntfs格式的,拷贝结果变成明文即可。
      

  7.   


    前面已经说过,不能直接通过进程启动copy命令,这种方法不符合要求。
      

  8.   

    Proccess p=new Proccess();
    p.starinfo.fileName="C:\\windows\copy.com";
    p.parameters="\d";p.start();
      

  9.   

    先try Copy,如果捕获到异常再用读写数据的方式自己复制。
      

  10.   


    我来解释一下 /d 的作用,如果一个文件(NTFS格式),设置了它的加密属性(右键选中文件-->属性-->General属性页上点击Advanced按钮 -->选中 "Encrypt contents to secure data"),这个时候如果使用copy命令(不带参数)把该文件拷贝到本地硬盘上另一个地方(NTFS格式),那么拷贝的结果也是一个加密文件,若拷贝到非NTFS格式的盘上或者拷贝到网络的共享目录中,则会发生拷贝异常,说是不能加密该文件。这种情况下,我们可以使用copy /d把该文件拷贝到非NTFS格式的盘上或者拷贝到网络的共享目录中,结果是明文文件。
    前面已经说过,不能直接通过进程启动copy命令,这种方法不符合要求。如果是本地,源文件是什么样的,拷贝结果也要一样,如果是网络或者非ntfs格式的,拷贝结果变成明文即可。
      

  11.   


    我来解释一下 /d 的作用,如果一个文件(NTFS格式),设置了它的加密属性(右键选中文件-->属性-->General属性页上点击Advanced按钮 -->选中 "Encrypt contents to secure data"),这个时候如果使用copy命令(不带参数)把该文件拷贝到本地硬盘上另一个地方(NTFS格式),那么拷贝的结果也是一个加密文件,若拷贝到非NTFS格式的盘上或者拷贝到网络的共享目录中,则会发生拷贝异常,说是不能加密该文件。这种情况下,我们可以使用copy /d把该文件拷贝到非NTFS格式的盘上或者拷贝到网络的共享目录中,结果是明文文件。
      

  12.   


    ems加密是操作系统在底层实现的加密解密机制,虽然知道它默认的加密算法是aes,但不知道它用的是什么密码,怎么读出来在加密啊??
      

  13.   

    通过Process类 调用DOS命令,随后执行命令 /D:m-d-y 复制在指定日期或指定日期以后更改的文件 如果没有提供日期,只复制那些源时间  比目标时间新的文件。
      

  14.   

    汗,楼主要做什么啊,要把带加密的文件弄到fat32盘里去!!!!
      

  15.   


    我记得WINAPI 里面有 CreateFile 函数提供了类似的选项,就是关于由NTFS文件系统向其它文件系统复制时加密文档如ZIP文档复制的情况。你可以通过 GetVolumeInformation 方法得到卷的信息,如果有 FS_FILE_ENCRYPTION 标志位,则表示可加密压缩。楼主可上MSDN,搜这两个关键词: File Encryption 和 CreateFile那么你的问题就转化为,如何从C#调用WINAPI函数的问题了。这个就挺简单的了。
      

  16.   


    晕倒,要看清楚前面的帖子在回答啊,非NTFS格式的盘,拷过去要求是明文。
      

  17.   


    file.copy()拷贝ems加密文件到非NTFS格式的盘或者网络共享目录下会爆异常,说该文件不能加密。
      

  18.   

    我来解释一下 /d 的作用,如果一个文件(NTFS格式),设置了它的加密属性(右键选中文件-->属性-->General属性页上点击Advanced按钮 -->选中 "Encrypt contents to secure data"),这个时候如果使用copy命令(不带参数)把该文件拷贝到本地硬盘上另一个地方(NTFS格式),那么拷贝的结果也是一个加密文件,若拷贝到非NTFS格式的盘上或者拷贝到网络的共享目录中,则会发生拷贝异常,说是不能加密该文件。这种情况下,我们可以使用copy /d把该文件拷贝到非NTFS格式的盘上或者拷贝到网络的共享目录中,结果是明文文件。 
    前面已经说过,不能直接通过进程启动copy命令,这种方法不符合要求。 如果是本地,源文件是什么样的,拷贝结果也要一样,如果是网络或者非ntfs格式的,拷贝结果变成明文即可。
      

  19.   

    使用批处理不知道可不可行 public void CreateBAT(string strBatPath)
            {
                string strPath = strBatPath + "\\1.txt";
                strBatPath = strBatPath + "\\copy.bat";
                string[] strs;            if (System.IO.File.Exists(strBatPath))
                    System.IO.File.Delete(strBatPath);            string batTxt = "copy /d " + strPath + "\"";
                Stream st = new FileStream(strBatPath, FileMode.OpenOrCreate);            using (StreamWriter sw = new StreamWriter(st))
                {
                    sw.Write(batTxt.ToString());
                    sw.Close();
                    st.Dispose();
                    st.Close();
                }
            }