我想知道某些应用程序在 Mac 上是否包含滚轮权限。正如人们在第一张图片存在滚轮权限中看到的那样,但在第二张图片中没有滚轮权限。我想写方法
-(BOOL)isWheelPresent :(NSString *)path
任何人都可以告诉我如何做到这一点吗? (使用 Cocoa 和 Objective-c)
- iTune.app
2.iPhoto.app
最佳答案
通常,您应该使用 NSFileManager
提供的方法来检查当前用户是否可读或可写文件。类(class)。但是,如果您确实需要知道 wheel
是否组拥有该文件,您可以使用 C 函数 stat
检查和getgrgid
来自sys/stat.h
和grp.h
。下面是一个示例 Objective-C 类,它将 C 代码包装在方法后面,以及一个以 0 if wheel
退出的简单程序。拥有该文件,如果不拥有该文件则为 1:
#import <Foundation/Foundation.h>
#include <grp.h>
#include <string.h>
#include <sys/stat.h>
@interface FileOwnerManager : NSObject
- (BOOL)isWheelPresent:(NSString *)path;
@end
@implementation FileOwnerManager
- (BOOL)isWheelPresent:(NSString *)path
{
struct stat f_stat;
int res = stat([path UTF8String], &f_stat);
if (res != 0) {
NSLog(@"Error!");
return NO;
}
struct group *group = getgrgid(f_stat.st_gid);
NSLog(@"%@: %s", path, group->gr_name);
return strcmp(group->gr_name, "wheel") == 0;
}
@end
int main(int argc, char **argv)
{
BOOL res = NO;
@autoreleasepool {
FileOwnerManager *fom = [[FileOwnerManager alloc] init];
res = [fom isWheelPresent:[NSString stringWithUTF8String:argv[1]]];
[fom release];
}
return res ? 0 : 1;
}
关于objective-c - 如何以编程方式知道文件/应用程序是否包含 Mac 上的某些滚轮权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31130390/