2012-10-07 95 views
4

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

回答

1

刚刚试图打开RW文件,看看它是否成功?

+0

谢谢,实际上它比任何东西都简单。我会检查它是否适合我的情况。 – ViKozh

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 
} 
+0

谢谢。我认为它不能在Windows上工作,或者它可能通过POSIX子系统? – ViKozh

+0

@ViKozh嗯不知道。你可以试试。 AFAICT它应该仍然是公平的游戏,如果它没有工作,因为你显然发现'.GetAccessControl'不能在* NIX上工作... _That_可能与文件系统驱动程序有关(虽然检查(扩展)文件属性已启用?) – sehe