Windows 7 can';在win 7中不写入物理驱动器?

Windows 7 can';在win 7中不写入物理驱动器?,windows-7,permissions,Windows 7,Permissions,我编写了一个磁盘实用程序,允许您擦除整个物理驱动器。它使用windows文件api,调用: destFile = CreateFile("\\\\.\\PhysicalDrive1", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,createflags, NULL); 然后只需调用WriteFile,并确保以扇区的倍数写入,即512字节 在过去,在XP上,甚至在Win7 RC上,

我编写了一个磁盘实用程序,允许您擦除整个物理驱动器。它使用windows文件api,调用:

destFile = CreateFile("\\\\.\\PhysicalDrive1",
    GENERIC_WRITE,  FILE_SHARE_READ | FILE_SHARE_WRITE,
    NULL, OPEN_EXISTING,createflags, NULL);
然后只需调用
WriteFile
,并确保以扇区的倍数写入,即512字节

在过去,在XP上,甚至在Win7 RC上,这种方法都很有效,您所要做的就是确保以管理员身份运行它

但是现在我有了零售版Win7 professional,它不再工作了!驱动器仍然可以正常打开进行写入,但是在成功打开的驱动器上调用
WriteFile
现在失败了

有人知道为什么会这样吗?它可能与用共享标志打开它有关吗?这一直是我以前做过的,而且很有效。是否有什么东西正在共享驱动器?阻止写入?是否有某种方法可以正确地“卸载”驱动器,或者至少卸载驱动器上的分区,以便我以独占方式访问它

其他一些曾经有用的工具也不再有用了,但有些确实有用,比如WD Diagnostic的擦除功能。在它擦除驱动器后,我的工具也可以在上面工作!这让我相信,我需要先对驱动器执行一些“卸载”过程,以释放写入它的权限

有什么想法吗

更新:

WriteFile
返回的错误代码为'5',
error\u ACCESS\u DENIED

但同样,如果我先使用WD Diag“擦除”驱动器,那么我可以很好地访问和写入驱动器。当我再次初始化驱动器并给它一个分区时,我返回到获取
错误\u ACCESS\u DENIED
错误。

这几乎肯定与通过更改页面文件中的扇区来防止针对驱动程序签名的攻击有关。它将阻止写入包含分区的磁盘区域


请参阅并查看以文本“如果直接写入已装入文件系统的卷”开头的信息,基本上您必须锁定磁盘卷才能写入其扇区

请告知错误代码或错误消息。@jweyrich:错误是:error\u ACCESS\u denied我的建议是检查UAC是否与此有关。尝试禁用它并重新运行应用程序。评论结果。这看起来很有希望,我假设您不能在物理驱动器上调用FSCTL\u DISMOUNT\u卷,必须枚举驱动器上的分区并在所有分区上调用FSCTL\u DISMOUNT\u卷。我不知道如何在物理驱动器上获取分区,但我会研究一下,明天再尝试,谢谢。您可以始终使用FindFirstVolume/FindNextVolume枚举系统上的所有卷,在每个卷上调用IOCTL\u VOLUME\u get\u VOLUME\u DISK\u EXTENTS,然后检查该卷在相关磁盘上是否有任何备份存储。(还有一些更棘手的情况,卷可以分布在多个磁盘上,等等)