如何使用.Net中的C#确定我的内部网上的远程计算机是否具有写入权限?
答案 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
了解更多信息