如何在.Net中以编程方式确定我是否具有使用C#的写权限?

时间:2008-09-26 00:08:45

标签: c# .net networking file-permissions

如何使用.Net中的C#确定我的内部网上的远程计算机是否具有写入权限?

4 个答案:

答案 0 :(得分:6)

简单的答案是尝试并看到。 Windows安全API不适合胆小的人,并且您可能拥有写权限而无权查看权限!

答案 1 :(得分:4)

在那里,我找到的最好和最可靠的解决方案是:

bool hasWriteAccess = true;
string remoteFileName = "\\server\share\file.name"

try
{
    createRemoteFile(remoteFileName);   
}
catch (SystemSecurityException)
{
     hasWriteAccess = false;   
}

if (File.Exists(remoteFileName))
{
    File.Delete(remoteFileName);
}

return hasWriteAccess;

答案 2 :(得分:3)

查看此论坛帖子。

http://bytes.com/forum/thread389514.html

它描述了使用System.Security.AccessControl命名空间中的对象来获取文件的ACL权限列表。它仅适用于.NET 2.0及更高版本。我认为它还假设您有一个SMB网络。我不确定如果你使用非Windows网络会怎么做。

如果您不使用.NET 2.0或更高版本,则通常是pInvoke和Win32 API爵士乐。

答案 3 :(得分:1)

ScottKoon写的是关于检查Windows ACL权限。您还可以使用CAS(代码访问安全性)检查托管代码权限。这是一种限制权限的.Net特定方法。请注意,如果用户没有写入权限,那么代码将永远不会具有写入权限(即使CAS说明了这一点) - 两次胜利之间限制性最强的权限。

CAS非常易于使用 - 您甚至可以在方法的开头添加声明性属性。您可以在MSDN

了解更多信息