4

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

4

3 回答 3

4

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-07T21:32:46.663 回答
1

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

于 2012-10-07T21:18:31.487 回答
0

File.GetAttributes(path)

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

没有那么多的信息.GetAccessControl,但你可以确定文件是否ReadOnly

于 2012-10-07T21:59:50.930 回答