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

有帮助吗?

解决方案

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

其他提示

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

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;

查看此论坛帖子。

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

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

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

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

CAS非常易于使用 - 您甚至可以在方法的开头添加声明性属性。您可以在 MSDN 上阅读更多内容

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top