最近我遇到了问题,我无法在进程/线程之间共享文件访问权限。 简单的代码:
FileStream open = File.Open("path", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
接下来调用FileOpen与FileAccess.Read和sharing - None或Read - 抛出exeption。
必须假设此代码允许读取与“本机”WinAPI函数CreateFile相同的任何人,这在这种情况下非常完美。
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr CreateFileW(
[MarshalAs(UnmanagedType.LPWStr)] string filename,
[MarshalAs(UnmanagedType.U4)] EFileAccess access,
[MarshalAs(UnmanagedType.U4)] EFileShare share,
IntPtr securityAttributes,
[MarshalAs(UnmanagedType.U4)] ECreationDisposition creationDisposition,
[MarshalAs(UnmanagedType.U4)] EFileAttributes flagsAndAttributes,
IntPtr templateFile);
IntPtr ptr = CreateFileW(path,
EFileAccess.GenericRead,
EFileShare.None,
IntPtr.Zero,
ECreationDisposition.OpenExisting,
EFileAttributes.Normal,
IntPtr.Zero);
那么,使用.NET共享文件访问是否有任何技巧?
再一次!实际上我们可以使用下一个代码共享文件:
FileStream open = File.Open("path", FileMode.OpenOrCreate, **FileAccess.Read**, FileShare.Read);
但在我的情况下 - 我确实需要第一个线程能够写文件!!