任何方式来检查给定的路径,可能是本地文件夹(c:\ temp)或UNC(\ server \ share)上写权限是否可用?我不能用try/catch语句,因为我可能会写权限,但不能删除,所以我将无法删除创建的文件...在c#中的文件夹或UNC路径写入权限
回答
是的,你可以使用FileIOPermission
类和FileIOPermissionAccess
枚举。
FileIOPermissionAccess.Write
:
访问写入或删除文件或目录。写入权限包括删除和覆盖文件或目录。
FileIOPermission f = new FileIOPermission(FileIOPermissionAccess.Write, myPath);
try
{
f.Demand();
//permission to write/delete/overwrite
}
catch (SecurityException s)
{
//there is no permission to write/delete/overwrite
}
没有写访问权限的UNC没有工作... – 2013-03-12 19:21:48
您使用权限要求,即:
FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
f2.Demand();
// do something useful with the file here
}
catch (SecurityException s)
{
Console.WriteLine(s.Message);
// deal with the lack of permissions here.
}
指定所需的权限和所需的文件系统对象。如果您没有要求的权限,则会引发安全异常。在
- http://support.microsoft.com/kb/315529
- http://msdn.microsoft.com/en-us/library/system.security.permissions.fileiopermission.aspx
更多细节对于各种原因—竞争条件是其中—一个很复杂得多,它似乎检查NTFS文件系统权限。
很显然,我们后来发现,这是UNC路径的禁用操作。看到这个问题,Testing a UNC Path's "Accessability",detials。
一点谷歌福认为,这CodeProject上的类可能是有用的,但:http://www.codeproject.com/Articles/14402/Testing-File-Access-Rights-in-NET-2-0
这两种解决方案都不适用于UNC。我有一个UNC路径具有读取权限但不能写入。如果我将该路径传递给上面的代码,则两者都返回Write。 – 2013-03-12 19:21:24
是的......显然,我们在几年前就已经发现这种情况:D - http://stackoverflow.com/questions/5732347/testing-a-unc-paths-accessability。看起来你需要直接看ACL。这可能工作:http://www.codeproject.com/Articles/14402/Testing-File-Access-Rights-in-NET-2-0。我已经修改了我的答案以反映相同。 – 2013-03-12 21:34:20
欣赏你的帮助,但那也行不通......我不得不即兴即兴。 – 2013-03-13 17:52:28
- 1. 读/写文件与UNC路径 - 在C++
- 2. 写入appdata文件夹 - 权限问题?
- 3. 如何在.net的UNC路径中创建空文件夹?
- 4. 文件夹写权限
- 5. UNC路径文件URI
- 6. 如何从QML中的UNC路径设置FileDialog的文件夹?
- 7. C#测试用户是否有写入文件夹的权限
- 8. Java Web Start:如何将文件写入Windows UNC路径?
- 9. 没有例外试图删除UNC路径上的文件夹受权限限制
- 10. 限制文件/文件夹写入指定的根以外的路径
- 11. htaccess的重写文件路径的文件夹路径
- 12. 用于文件夹写入的php文件权限
- 13. Android文件夹的读写权限
- 14. Yii的文件夹没有写权限
- 15. 文件写入权限
- 16. 权限写入文件
- 17. 测试使用子文件夹的UNC路径
- 18. 使用UNC路径检索文件夹的组和用户
- 19. 如何检查在C#文件夹的读写权限
- 20. 如何给ASP.NET权限写入Windows 7中的文件夹?
- 21. 如何更改/ var文件夹中的读取写入权限
- 22. docker中的可写入文件夹权限
- 23. 在目标文件中读取sqlite的写入权限c
- 24. 使用Powershell为UNC路径设置“共享权限”
- 25. OneDrive UNC路径
- 26. Path.GetDirectoryName UNC路径
- 27. 如何拒绝对C#中所有用户的文件夹的写入权限?
- 28. 从本地路径或映射路径获取UNC路径
- 29. 无法为UNC路径使用md创建多个文件夹
- 30. OpenShift在线主文件夹无写入权限
权限可以在你的应用程序运行时间而改变。或者在写入之后但删除之前网络可能会关闭。你必须研究如何处理这些情况*无论如何* - 为什么要写更多的代码? – 2013-03-12 18:02:04