gpt4 book ai didi

objective-c - 如何以编程方式知道文件/应用程序是否包含 Mac 上的某些滚轮权限

转载 作者:行者123 更新时间:2023-12-03 17:33:45 25 4
gpt4 key购买 nike

我想知道某些应用程序在 Mac 上是否包含滚轮权限。正如人们在第一张图片存在滚轮权限中看到的那样,但在第二张图片中没有滚轮权限。我想写方法

-(BOOL)isWheelPresent :(NSString *)path

任何人都可以告诉我如何做到这一点吗? (使用 Cocoa 和 Objective-c)

  1. iTune.app

enter image description here

2.iPhoto.app

enter image description here

最佳答案

通常,您应该使用 NSFileManager 提供的方法来检查当前用户是否可读或可写文件。类(class)。但是,如果您确实需要知道 wheel 是否组拥有该文件,您可以使用 C 函数 stat 检查和getgrgid来自sys/stat.hgrp.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com