我正在与Mono开发跨平台应用程序。我想检查运行应用程序的用户的RW访问权限。在NT上我可以使用.GetAccessControl方法(在Mono抛出PlatformNotSupported异常),但是如何处理*nix和MacOS呢?有没有跨平台的解决方案?
发布于 2012-10-08 05:32:47
Mono.Unix具有特定于UNIX的实现:
var ufi = new UnixFileInfo("/tmp/test.cpp");
ufi.CanAccess(AccessModes.F_OK); // is a file/directory
ufi.CanAccess(AccessModes.R_OK); // accessible for reading
ufi.CanAccess(AccessModes.W_OK); // accessible for writing
ufi.CanAccess(AccessModes.X_OK); // accessible for executing
FileSpecialAttributes sa = ufi.FileSpecialAttributes; //setuid, setgid and sticky bits
FileAccessPermissions fa = ufi.FileAccessPermissions;FileAccessPermissions定义为:
[Flags ()]
public enum FileAccessPermissions {
UserReadWriteExecute,
UserRead,
UserWrite,
UserExecute,
GroupReadWriteExecute,
GroupRead,
GroupWrite,
GroupExecute,
OtherReadWriteExecute,
OtherRead,
OtherWrite,
OtherExecute,
DefaultPermissions,
AllPermissions
}发布于 2012-10-08 05:18:31
尝试打开RW的文件并查看是否成功如何?
发布于 2012-10-08 05:59:51
File.GetAttributes(path)
http://msdn.microsoft.com/en-us/library/system.io.fileattributes.aspx
虽然信息不像.GetAccessControl那么多,但您可以确定文件是否为ReadOnly
https://stackoverflow.com/questions/12772930
复制相似问题