我有以下C#代码:
static void Main(string[] args)
{
FileStream fileStream = null;
try
{
// read from file or write to file
fileStream = new FileStream(@"D:\FileLock.txt", FileMode.Open, FileAccess.Read, FileShare.None);
}
catch
{
}
finally
{
fileStream.Close();
}
}
我正在尝试使用以下C(WinAPI)代码将文件“D:\ FileLock.txt”复制到另一个位置:
CopyFile(_T("D:\\FileLock.txt"), _T("D:\\temp\\FileLock.txt"),FALSE);
但是我得到了ERROR_SHARING_VIOLATION(正如预期的那样)。
无论如何我可以绕过这个吗? (即在这些条件下复制文件) - 无需修改C#代码
答案 0 :(得分:-1)
如果您可以更改C#代码,那么这应该有效(更改OP代码以使用FileShare.Read):
static void Main(string[] args)
{
using (FileStream fileStream = new FileStream(@"D:\FileLock.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
{
}
}
答案 1 :(得分:-3)
经过进一步研究,似乎可以通过编写驱动程序并使用一些低级函数来实现。