在Mono上测试文件权限

时间:2012-10-07 21:15:46

标签: c# mono file-permissions

我正在使用Mono开发跨平台应用。我想检查运行应用程序的用户的RW访问权限。在NT上我可以使用.GetAccessControl方法(在Mono上抛出PlatformNotSupported异常),但是如何处理* nix和MacOS?是否存在任何跨解决方案?

3 个答案:

答案 0 :(得分:3)

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
}

答案 1 :(得分:1)

如何尝试打开RW文件并查看是否成功?

答案 2 :(得分:0)

File.GetAttributes(path)

http://msdn.microsoft.com/en-us/library/system.io.fileattributes.aspx

.GetAccessControl的信息不多,但您可以确定文件是否为ReadOnly