C++ - 如何读取系统文件

C++ - How to read system files

本文关键字:读取 系统文件 何读取 C++      更新时间:2023-10-16

我正在尝试查找一个以"silabs-cdc"开头的文件"C:\Windows\System32\DriverStore\FileRepository"

DIR *dir;
struct dirent *ent;
if ((dir = opendir(path.c_str())) != NULL) { // FAILED
while ((ent = readdir(dir)) != NULL) 
{
std::string fln = ent->d_name;
if(fln.substr(0,10) == "silabs-cdc")
{
// I found it
break;
}
}
closedir(dir);
}

但是在Windows Vista上,OpenDir总是以错误结束,因为文件夹不存在(但它存在!(,Windows XP,Windows 10工作正常。我也尝试了查找第一个文件函数,但结果相同。

是否有任何系统文件夹保护?是否有可能通过它 - 以编程方式?

顺便说一句:非系统文件夹工作正常,文件夹的路径正确

编辑:以管理员身份运行程序将不执行任何操作

根据我们的评论交流,看起来在 Vista 上,您构建了一个 32 位可执行文件,但驱动程序是作为 64 位驱动程序安装的。WOW64 重定向工具意味着即使您尝试在C:WindowsSystem32下打开一条路径,您实际上也打开了一条在C:WindowsSysWOW64下的路径。您可以显式禁用重定向,也可以构建可执行文件以匹配系统的位度,因为 64 位可执行文件不会受到重定向的影响。