Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C fopen无法打开windows主机文件_C_Windows_Network Programming_Fopen - Fatal编程技术网

C fopen无法打开windows主机文件

C fopen无法打开windows主机文件,c,windows,network-programming,fopen,C,Windows,Network Programming,Fopen,我这里有一个文件*target,它应该打开windows主机文件并写入: FILE* target; target = fopen("C:\\windows\\sysnative\\drivers\\etc\\hosts", "r+"); if (target != NULL) { printf("true\n"); } else { printf("false\n"); } 但是,在打开windows主机文件时,它无法打开该文件。具体地说,fopen()返回NULL并将fal

我这里有一个
文件*target
,它应该打开windows主机文件并写入:

FILE* target;
target = fopen("C:\\windows\\sysnative\\drivers\\etc\\hosts", "r+");
if (target != NULL) {
    printf("true\n");
} else {
    printf("false\n");
}

但是,在打开windows主机文件时,它无法打开该文件。具体地说,
fopen()
返回
NULL
并将
false
打印到屏幕上。我查了一下目录。这很好。除去多余的
\
s,我可以用记事本打开它。但是
fopen()
无法打开该文件。它可以打开当前工作目录中的任何文件,或其中的嵌套目录中的任何文件,但无法打开主机文件。也许我的道路有问题?我遗漏了什么吗?

您需要管理员权限才能在windows上打开主机文件,请尝试以管理员身份运行脚本。

每当文件操作在windows上失败时,您可以调用
GetLastError()
(在Posix系统上为errno')以了解操作失败的原因。这将返回一个错误代码,您可以查找它失败的原因

是否确定打开模式
“r+”
?这意味着你要同时开放阅读和写作。而且你不太可能不能打开进行写操作。@Someprogrammerdude如果我打开它进行读写操作,那么这意味着我也可以对它进行写操作?它是一个系统文件,你需要管理员权限才能进行写操作it@Jean-弗朗索瓦·法布,你认为我该如何修复它?我应该使用
gcc
作为admin编译源代码,还是以admin的身份运行可执行文件本身?我已经尝试以管理员的身份运行可执行文件,但它仍然无法解决问题。请首先尝试使用
r
模式,看看您是否可以阅读它。然后尝试写入,在运行exeSo时使用提升的权限,显然以管理员身份运行Windows命令提示符,然后编译源代码,并在其中运行可执行文件,这样做是有效的
fopen()
能够成功写入该文件。具体而言,主机文件授予标准用户通用读取权限,因此
“r”
模式可以正常工作,但“r+”模式需要管理员身份。