IIS下调用MoveFileEx

发布于 2024-11-14 07:56:40 字数 370 浏览 4 评论 0原文

我正在使用这种代码在系统重新启动后删除文件。

[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool MoveFileEx(string lpExistingFileName,string pNewFileName, MoveFileFlags dwFlags);

VS 中的原生 iis-imitator 一切正常。 但是当我使用 IIS 时,这段代码失败,没有任何错误消息。

我可以建议这是 IIS 上的权限问题。 但这只是我的愚蠢建议。

你能帮我处理这个案子吗?

I'm using this kind of code to remove file after system reboot.

[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool MoveFileEx(string lpExistingFileName,string pNewFileName, MoveFileFlags dwFlags);

Everything is ok with native iis-imitator in VS.
But when I'm using IIS this piece of code fails without any error message.

I can suggest that this is a problem with permissions on IIS.
But it's only my dumb suggestion.

Can you please help me with this case?

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

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

发布评论

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

评论(1

时常饿 2024-11-21 07:56:40
  • 检查 MoveFileEx() 调用的返回值。如果为 false,则调用失败。
  • 调用Marshal.GetLastWin32Error找出Win32错误代码。这有时有助于缩小问题范围(尽管并非总是如此)。
  • 如果这没有任何意义,那么您需要告诉我们您要移动的文件及其新目的地的完整路径名。

在您的评论中,您声明您正在传递 MOVEFILE_DELAY_UNTIL_REBOOT 标志。 MoveFileEx 文档 指出:

仅当进程处于属于管理员组或本地系统帐户的用户上下文中时,才可以使用此值。

看来这可能是问题的根本原因。感谢@Logan 指出了这一点。

  • Check the return value of your call to MoveFileEx(). If it is false then the call failed.
  • Call Marshal.GetLastWin32Error to find out the Win32 error code. This sometimes helps narrow the problem down (although not always).
  • If that sheds no more light then you'll need to tell us the full path names for the file you are moving, and for its new destination.

In your comments you state that you are passing the MOVEFILE_DELAY_UNTIL_REBOOT flag. The documentation for MoveFileEx states:

This value can be used only if the process is in the context of a user who belongs to the administrators group or the LocalSystem account.

It seems likely that this is the root cause of the problem. Thanks to @Logan for pointing this out.

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