首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Fortran和/或C++将文件从C:\Windows\System32 32文件夹复制到C:\Windows\SysWOW64 64文件夹

使用Fortran和/或C++将文件从C:\Windows\System32 32文件夹复制到C:\Windows\SysWOW64 64文件夹
EN

Stack Overflow用户
提问于 2022-06-07 06:43:17
回答 1查看 487关注 0票数 0

我试图使用Fortran和/或C++代码将一个文件从C:\Windows\System32 32文件夹复制到C:\Windows\SysWOW64 64文件夹。

Fortran代码:

代码语言:javascript
运行
复制
call system ('copy C:\Windows\System32\filename.extension C:\Windows\SysWOW64\filename.extension')
end

C++代码:

代码语言:javascript
运行
复制
#include <iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main() {
   system('copy C:\Windows\System32\filename.extension C:\Windows\SysWOW64\filename.extension');
   return 0;
}

以上代码的执行将返回如下错误:

代码语言:javascript
运行
复制
The system cannot find the file specified.

当我进入

代码语言:javascript
运行
复制
copy C:\Windows\System32\filename.extension C:\Windows\SysWOW64\filename.extension

在管理员模式下的命令提示符中,它工作正常并返回

代码语言:javascript
运行
复制
1 file(s) copied.

是否知道如何使用Fortran和/或C++编程语言将文件从C:\Windows\System32 32文件夹复制到C:\Windows\SysWOW64 64文件夹?

非常感谢您在这件事上的时间和帮助,

贝伯根

EN

回答 1

Stack Overflow用户

发布于 2022-06-07 06:55:15

在Windows上,有一个名为CopyFile的API。C++中的示例:

代码语言:javascript
运行
复制
 std::wstring source = L"C:\\Windows\\System32\\filename.extension";
 std::wstring dest = L"C:\\Windows\\SysWOW64\\filename.extension";
 BOOL result = CopyFileW(source.c_str(), dest.c_str(), TRUE);
 DWORD dwLastError = result : 0 : GetLastError();

当编译为64位可执行文件并在64位Windows上运行时,上面的代码将很好地工作。不过,请注意:

  • 32位Windows上不存在SysWow64文件夹.
  • 在64位Windows上,如果您的代码编译为32位,它将不会看到SysWow64文件夹.这是因为它已经被映射为System32文件夹。您应该阅读文件系统重定向器这里
  • 需要管理员特权才能运行。Windows中的应用程序兼容性可能会将文件复制操作重定向到私有的每个应用程序或每个用户的文件夹。
  • 不要硬编码这些路径。使用GetSystemWow64DirectoryGetSystemDirectory等API
  • 无论如何,你真的不应该处理Windows系统文件夹中的文件。这是为操作系统保留的。没有人应该把东西放在这里-因为这会产生应用程序兼容性和版本控制问题。我知道在“路径”中获取前男友和DLL很容易,所以加载起来更容易,但这是完全错误的方法。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72526904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档