我搜索了很多关于此的内容并且找不到任何解决方案,所以在此发帖。 来自Microsoft document
BOOL WINAPI ReplaceFile(
_In_ LPCTSTR lpReplacedFileName,
_In_ LPCTSTR lpReplacementFileName,
_In_opt_ LPCTSTR lpBackupFileName,
_In_ DWORD dwReplaceFlags,
_Reserved_ LPVOID lpExclude,
_Reserved_ LPVOID lpReserved
);
我需要在c#中实现这个现在的基本结构。
[DllImport("kernel32", SetLastError = true)]
private static extern bool ReplaceFile(
///argument implemetation here
);
但我不知道如何在c#中实现参数。我google了很多但没有得到解决方案。 任何人都可以帮我吗?
答案 0 :(得分:4)
根据pinvoke.net上的ReplaceFile信息,这就是您所需要的:
[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)]
static extern bool ReplaceFile(
string lpReplacedFileName,
string lpReplacementFileName,
string lpBackupFileName,
ReplaceFileFlags dwReplaceFlags,
IntPtr lpExclude,
IntPtr lpReserved);
[Flags]
enum ReplaceFileFlags : uint
{
REPLACEFILE_WRITE_THROUGH = 0x00000001,
REPLACEFILE_IGNORE_MERGE_ERRORS = 0x00000002,
REPLACEFILE_IGNORE_ACL_ERRORS = 0x00000004,
}
为最后两个参数传递IntPtr.Zero
。根据{{3}},它们没有被使用。相同的文档将解释其他参数的用途。