C# 在IIS下调用MoveFileEx
我正在使用这种代码在系统重新启动后删除文件 [DllImport(“kernel32.dll”,SetLastError=true,CharSet=CharSet.Unicode)]C# 在IIS下调用MoveFileEx,c#,.net,kernel,dllimport,C#,.net,Kernel,Dllimport,我正在使用这种代码在系统重新启动后删除文件 [DllImport(“kernel32.dll”,SetLastError=true,CharSet=CharSet.Unicode)] 公共静态外部bool MoveFileEx(字符串lpExistingFileName、字符串pNewFileName、MoveFileFlags dwFlags) 在VS中使用本机iis模仿者一切正常。 但是当我使用IIS时,这段代码失败,没有任何错误消息 我认为这是IIS权限的问题。 但这只是我愚蠢的建议 你能
公共静态外部bool MoveFileEx(字符串lpExistingFileName、字符串pNewFileName、MoveFileFlags dwFlags)强> 在VS中使用本机iis模仿者一切正常。 但是当我使用IIS时,这段代码失败,没有任何错误消息 我认为这是IIS权限的问题。 但这只是我愚蠢的建议 你能帮我拿这个箱子吗?
- 检查调用
的返回值。如果为false,则调用失败MoveFileEx()
- 调用
查找Win32错误代码。这有时有助于缩小问题范围(尽管并非总是如此)Marshal.GetLastWin32Error
- 如果这不再说明问题,那么您需要告诉我们您正在移动的文件及其新目标的完整路径名
在您的评论中,您声明您正在传递
MOVEFILE\u DELAY\u直到重新启动
标志。各国:
仅当进程位于属于administrators组或LocalSystem帐户的用户上下文中时,才能使用此值
这似乎是问题的根本原因。感谢@Logan指出这一点。这意味着流程没有足够的权限来执行此操作。你能告诉我们涉及的路径吗?这是路径:C:\TempFiles\Test\Artur-Okolity-Test\Yo-Preview 004\image.jpg。顺便说一句,我使用参数MoveFileFlags.DelayUntilReboot调用此方法。移动文件需要两个路径。您只提供了一个。DelayUntilReboot需要admin或LocalSystem