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 に答える