任何方式来检查给定的路径,可能是本地文件夹(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. 如何在.net的UNC路径中创建空文件夹?
- 2. 文件夹写权限
- 3. UNC路径文件URI
- 4. 如何从QML中的UNC路径设置FileDialog的文件夹?
- 5. C#测试用户是否有写入文件夹的权限
- 6. Java Web Start:如何将文件写入Windows UNC路径?
- 7. 没有例外试图删除UNC路径上的文件夹受权限限制
- 8. 限制文件/文件夹写入指定的根以外的路径
- 9. htaccess的重写文件路径的文件夹路径
- 10. Android文件夹的读写权限
- 11. 文件写入权限
- 12. 权限写入文件
- 13. 测试使用子文件夹的UNC路径
- 14. 如何检查在C#文件夹的读写权限
- 15. docker中的可写入文件夹权限
- 16. 如何拒绝对C#中所有用户的文件夹的写入权限?
- 17. 使用Powershell为UNC路径设置“共享权限”
- 18. Path.GetDirectoryName UNC路径
- 19. 从本地路径或映射路径获取UNC路径
- 20. 在远程服务器上为文件夹写入权限
- 21. 如何在Azure Web App上设置文件夹写入权限?
- 22. 文件夹权限?
- 23. 文件夹权限
- 24. 文件夹权限
- 25. 文件夹权限
- 26. git访问存储库文件或路径的权限
- 27. 您的Magento文件夹没有足够的写入权限。
- 28. 在php和xml文件写入权限
- 29. 确定应用程序文件夹的写入权限
- 30. 允许WordPress对Docker挂载文件夹的写入权限
权限可以在你的应用程序运行时间而改变。或者在写入之后但删除之前网络可能会关闭。你必须研究如何处理这些情况*无论如何* - 为什么要写更多的代码? – 2013-03-12 18:02:04