fopen 无法打开 windows 主机文件

fopen is unable to open windows hosts file

我这里有一个 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 hosts 文件时,它无法打开。具体来说,fopen() returns NULLfalse 被打印到屏幕上。我检查了目录。这很好。删除多余的 \s,我可以用记事本打开它。但是 fopen() 无法打开该文件。它可以打开当前工作目录或其中的嵌套目录中的任何文件,但无法打开主机文件。也许我的路径有问题?我错过了什么吗?

您需要管理员权限才能在 windows 上打开主机文件,尝试 运行 您的脚本作为管理员。

每当 Windows 上的文件操作失败时,您可以调用 GetLastError()(Posix 系统上的 errno`)找出操作失败的原因。这将 return 一个错误代码,您可以查找它以找出失败的原因