【发布时间】:2012-09-28 04:25:51
【问题描述】:
我正在使用 Mono 开发跨平台应用程序。我想检查运行应用程序的用户的 RW 访问权限。在 NT 上,我可以使用 .GetAccessControl 方法(在 Mono 上抛出 PlatformNotSupported 异常),但如何处理 *nix 和 MacOS?有没有跨平台解决方案?
【问题讨论】:
标签: c# mono file-permissions
我正在使用 Mono 开发跨平台应用程序。我想检查运行应用程序的用户的 RW 访问权限。在 NT 上,我可以使用 .GetAccessControl 方法(在 Mono 上抛出 PlatformNotSupported 异常),但如何处理 *nix 和 MacOS?有没有跨平台解决方案?
【问题讨论】:
标签: c# mono file-permissions
File.GetAttributes(path)
http://msdn.microsoft.com/en-us/library/system.io.fileattributes.aspx
信息量不如.GetAccessControl,但可以判断文件是否为ReadOnly
【讨论】:
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
}
【讨论】:
.GetAccessControl 在 *NIX 上不起作用...... 那 可能与文件系统驱动程序有关(检查(扩展)文件属性是否启用?)
尝试为 RW 打开文件并查看它是否成功?
【讨论】: