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+”模式需要管理员身份。