【发布时间】:2010-09-13 07:34:26
【问题描述】:
如何使用 .Net 中的 C# 确定我是否对我的 Intranet 中的远程计算机具有写入权限?
【问题讨论】:
标签: c# .net networking file-permissions
如何使用 .Net 中的 C# 确定我是否对我的 Intranet 中的远程计算机具有写入权限?
【问题讨论】:
标签: c# .net networking file-permissions
简单的答案是试试看。 Windows 安全 API 不适合胆小的人,您可能拥有写入权限而无权查看权限!
【讨论】:
查看此论坛帖子。
http://bytes.com/forum/thread389514.html
它描述了使用System.Security.AccessControl 命名空间中的对象来获取文件的ACL 权限列表。它仅在 .NET 2.0 及更高版本中可用。我认为它还假设您有一个 SMB 网络。如果您使用的是非 Windows 网络,我不确定它会做什么。
如果您使用的不是 .NET 2.0 或更高版本,则可以使用通常的 pInvoke 和 Win32 API jazz。
【讨论】:
ScottKoon 写的是关于检查 Windows ACL 权限的文章。您还可以使用 CAS(代码访问安全)检查托管代码权限。这是 .Net 特定的限制权限的方法。注意,如果用户没有写权限,那么代码将永远不会有写权限(即使 CAS 说有) - 两者之间最严格的权限。
CAS 非常易于使用 - 您甚至可以在方法的开头添加声明性属性。你可以在MSDN阅读更多内容
【讨论】:
也去过那里,我找到的最好和最可靠的解决方案是:
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;
【讨论】: