2010-07-18 66 views
2

鉴于字符串的路径,我想擦除文件的内容。我认为自然的方式(可能不正确)是打开一个FileStream到文件并将乱码(可能从RNGCryptoServiceProvider获取的随机数据)写入文件。然后也许做几次,然后删除文件。在Compact Framework中安全擦除文件

我的问题是,虽然这可能看起来逻辑上正确,但我在另一个博客上读到Windows可能实际选择将文件写入硬盘中的其他位置。

这是Windows Mobile的情况吗?这实际上会成为一个问题吗?这是否写入硬盘中的其他位置是否适用于基于闪存的(SD等)卡?

+2

我并不确定,但SD/SSD等耗材均衡固件可能会使其更容易受此影响。 – 2010-07-18 10:40:47

+1

@Marc:是的,卡片中的损耗确实会让他们非常敏感。板载闪光灯也一样。 – ctacke 2010-07-18 16:32:39

+0

因此,刚刚用1和0写入文件几次不能确保文件被安全覆盖写入? – 2010-07-18 17:30:47

回答

0

我没有亲自做过这件事,但您可能需要使用低级别的FLASH驱动程序IOCTL来正确执行此操作。

http://msdn.microsoft.com/en-us/library/aa927166.aspx

我觉得IOCTL_FMD_RAW_WRITE_BLOCKS看起来特别有用。

-PaulH


,可能工作会擦除文件通常,然后使用碎片整理API来清除所有的可用空间对你的flash另一种可能性。由于您正在擦除所有内容,因此无需确切知道您的文件在磁盘上的位置。但是,这会让您的闪存驱动器更快磨损。本博客文章详细介绍了C#方法:http://blogs.msdn.com/b/jeffrey_wall/archive/2004/09/13/229137.aspx

+0

他需要找到该文件所在的块,以便用于任何用途,此外,如果它位于CF/SD卡之类的已安装商店中,则该卡无法正常工作,因为该卡可能正在进行磨损平衡并且您对数据所在的位置没有原始写访问权限。 – ctacke 2011-01-18 21:56:50

+0

@ctacke - 碎片整理API怎么样[http://msdn.microsoft.com/en-us/library/aa365731%28v=VS.85%29.aspx]? SDelete [http://technet.microsoft.com/zh-cn/sysinternals/bb897443]用于在磁盘上查找文件。 – PaulH 2011-01-19 15:32:59

+0

这个问题是关于Windows CE/Windows Mobile,所以没有碎片整理API。 – ctacke 2011-01-19 15:50:40