【发布时间】:2015-11-10 10:01:52
【问题描述】:
我尝试通过 CreateFile 打开现有文件,但它总是以 errorcode 2 失败 - 就像文件不存在,但它存在 - 它在可执行文件的文件夹中。
hFile = CreateFile( argv[ 1 ], GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL );
if ( hFile == INVALID_HANDLE_VALUE )
{
printf( "\nError: Unable to open file (%d)\n", GetLastError( ) );
return -1;
}
即使我用硬编码的文件名字符串替换argv[1],它也会失败。
应用程序正在以管理员身份运行。
【问题讨论】:
-
如果你从 IDE 运行它(我假设是 Visual Studio),afaik 你必须将文件放到包含源代码的文件夹中(默认文件夹)
-
我找到了解决方案 - 如果文件名是
file.txtCreateFile 不想要file.txt输入但C:\\file.txt -
使用相对路径并不是一个错误。
-
在the 文档中没有说,该函数需要绝对路径。您是否尝试检查当前目录?
-
@IInspectable 我想你很清楚我知道我在 Windows 上的方式。我知道
ls不是 Windows 的一部分。它是一个 GNU 工具,可以在 Windows 上完美运行。我知道我知道。无论这个特定工具是否以这种方式实现它,对简单的 CLI 程序使用相对路径都是一个有效的选择。碰巧的是,我现在正在查看的ls不会导入GetCurrentDirectory。 FWIW。