我是C语言编程的业余程序员,我知道如何直接从驱动器中读取数据(文件= fopen(“ //./ D:”,“ r”);)。现在,我想通过将提到的函数的第二个参数更改为“ w”,以相同的方式直接将数据写入磁盘。但是,即使我以管理员身份运行该程序也不起作用。我想知道:
如何使用C将数据直接写入驱动器或闪存驱动器?
像Diskpart.exe这样的程序如何写入磁盘?
我正在使用Windows。
答案 0 :(得分:2)
Windows施加special requirements for direct write access to disk volumes。您必须具有管理权限 ,还必须采取额外的步骤向操作系统证明您不会覆盖已装载文件系统的内容(这可能会导致整个计算机崩溃)。 。 fopen("//./D:", "w")
不会采取这些额外的步骤。在我看来,您无法使用fopen
,fread
,fwrite
等来执行此操作;您需要直接使用CreateFile,ReadFile,WriteFile等操作系统原语。
(正如在“问题与解答”中讨论的那样,现在已作为重复项关闭了,这些“额外步骤”的第一步是打开用于读写访问的设备路径名,即使您只是想写入-GENERIC_READ|GENERIC_WRITE
在CreateFile级别上。fopen模式"w"
仅向CreateFile提供GENERIC_WRITE
。您还需要指定特定的处置,共享模式,文件属性,安全属性等。 )