IIS下调用MoveFileEx
我正在使用这种代码在系统重新启动后删除文件。
[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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
MoveFileEx()
调用的返回值。如果为 false,则调用失败。Marshal.GetLastWin32Error
找出Win32错误代码。这有时有助于缩小问题范围(尽管并非总是如此)。在您的评论中,您声明您正在传递
MOVEFILE_DELAY_UNTIL_REBOOT
标志。MoveFileEx
文档 指出:看来这可能是问题的根本原因。感谢@Logan 指出了这一点。
MoveFileEx()
. If it is false then the call failed.Marshal.GetLastWin32Error
to find out the Win32 error code. This sometimes helps narrow the problem down (although not always).In your comments you state that you are passing the
MOVEFILE_DELAY_UNTIL_REBOOT
flag. The documentation forMoveFileEx
states:It seems likely that this is the root cause of the problem. Thanks to @Logan for pointing this out.