c# - 在 Mono 上测试文件权限

标签 c# mono file-permissions

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

最佳答案

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
}

关于c# - 在 Mono 上测试文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12772930/

相关文章:

c# - 如何在 Wheelcollider 位置 Unity 制作 Wheel Mesh Renderer

c# - 从模型中的嵌套对象获取 MVC4/Razor 中 JavaScript 元素的 ID

C# 正则表达式匹配不跟随相同字符对的字符

.net - 如何枚举运行.Net Mono 的网络共享?

PHP is_readable 为不可读文件返回 true

c# - 如何在 ASP.NET Core 3.1 MVC 中进行自定义路由

c# - 构建 monobjc Native App 时出现 Xbuild/Mono 错误

memory - F# 中旅行商的表现

linux - logrotate 说在旋转日志/重新创建日志文件时权限被拒绝

file-permissions - Fedora 25 Linux - cd/var/lib/pgsql 上的权限被拒绝