我正在使用这种代码在系统重启后删除文件。
[DllImport(“kernel32.dll”,SetLastError = true,CharSet = CharSet.Unicode)]
public static extern bool MoveFileEx(string lpExistingFileName,string pNewFileName,MoveFileFlags dwFlags);
VS中的本地iis-imitator一切都很好。 但是当我使用IIS时,这段代码失败而没有任何错误消息。
我可以建议这是IIS上的权限问题。 但这只是我愚蠢的建议。
你可以帮我解决一下这个案子吗?
答案 0 :(得分:1)
MoveFileEx()
的通话的返回值。如果是假则呼叫失败。Marshal.GetLastWin32Error
以查找Win32错误代码。这有时有助于缩小问题范围(尽管并非总是如此)。在您的评论中,您声明您正在传递MOVEFILE_DELAY_UNTIL_REBOOT
标记。 documentation for MoveFileEx
州:
仅当进程位于属于administrators组或LocalSystem帐户的用户的上下文中时,才能使用此值。
这似乎是问题的根本原因。感谢@Logan指出这一点。