MoveFileEx 问题

发布于 2024-09-04 22:07:02 字数 492 浏览 5 评论 0原文

int i ;
DWORD dw ;
String^ Source = "c:\\Program\\test.exe" ;
String^ Destination = "c:\\Program Files" ; // move to program Files Folder

//pin_ptr<const wchar_t> WSource = PtrToStringChars(Source);
// pin_ptr<const wchar_t> WDestination = PtrToStringChars(Destination);

i = MoveFileEx(L"c:\\Program Files\\Program\\Test.exe",L"c:\\Program Files",MOVEFILE_REPLACE_EXISTING) ;
dw = GetLastError() ;

return 0; 

当我运行程序时,状态 dw 的值为 5 。

错误是什么

int i ;
DWORD dw ;
String^ Source = "c:\\Program\\test.exe" ;
String^ Destination = "c:\\Program Files" ; // move to program Files Folder

//pin_ptr<const wchar_t> WSource = PtrToStringChars(Source);
// pin_ptr<const wchar_t> WDestination = PtrToStringChars(Destination);

i = MoveFileEx(L"c:\\Program Files\\Program\\Test.exe",L"c:\\Program Files",MOVEFILE_REPLACE_EXISTING) ;
dw = GetLastError() ;

return 0; 

The status dw is valued as 5 , when i run the program.

Whats the error

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

耀眼的星火 2024-09-11 22:07:02

输入命令提示符net helpmsg 5。这将向您显示错误的含义。
在我的系统中,它是:“访问被拒绝。”。

只是提示:为什么第二个参数不是文件路径?

Type in command prompt net helpmsg 5. This will show you the meaning of the error.
In my system it is: "Access is denied.".

Just a hint: why second parameter is not a file path?

独行侠 2024-09-11 22:07:02

错误代码 5 表示访问被拒绝。请检查您是否对目标目录有足够的权限。

BOOL WINAPI MoveFileEx(
  __in      LPCTSTR lpExistingFileName,
  __in_opt  LPCTSTR lpNewFileName,
  __in      DWORD dwFlags
);

MOVEFILE_REPLACE_EXISTING -- 如果 lpNewFileName 或 lpExistingFileName 命名目录,则不能使用该值。

在您的情况下,目标是“C:\Program files”目录。所以它失败了。

Error code 5 is Access Denied. Please check if you have enough permissions for destination directory.

BOOL WINAPI MoveFileEx(
  __in      LPCTSTR lpExistingFileName,
  __in_opt  LPCTSTR lpNewFileName,
  __in      DWORD dwFlags
);

MOVEFILE_REPLACE_EXISTING -- This value cannot be used if lpNewFileName or lpExistingFileName names a directory.

In your case the destination is "C:\Program files" a directory. So it fails.

↙厌世 2024-09-11 22:07:02

错误 5 表示访问被拒绝。 可能会出现此错误(

  • 如果您没有在目标目录中写入的权限,则
  • 您无权覆盖目标目录中同名的现有文件)。

我认为你处于第二种情况:你要覆盖的文件被锁定。这是一个可执行文件,它可能正在运行。

Error 5 is Access Denied. This error may occur if

  • you do not have the right to write in the destination directory
  • you do not have the right to overwrite an existing file with the same name in the destination directory.

I think you are in the second case: the file you want to overwrite is locked. This it is an executable, it may be running.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文