【发布时间】:2018-12-30 20:30:12
【问题描述】:
我在这里有一个FILE* 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() 无法打开该文件。它可以打开当前工作目录或其中的嵌套目录中的任何文件,但无法打开主机文件。也许我的路径有问题?我错过了什么吗?
【问题讨论】:
-
你确定打开模式
"r+"?这意味着您要打开阅读和写作。而且你不能打开写作也不是不可能的。 -
@Someprogrammerdude 如果我打开它是为了读写,那么这意味着我也可以write到它吗?
-
这是一个系统文件,需要管理员权限才能写入
-
@Jean-FrançoisFabre 你建议我如何解决它?我应该以管理员身份使用
gcc编译源代码,还是以管理员身份运行可执行文件本身?我已经尝试以管理员身份运行可执行文件,但仍然无法解决问题。 -
先用
r模式试试看能不能看懂。然后尝试写入它,在运行 exe 时使用提升的权限
标签: c windows network-programming fopen