gpt4 book ai didi

objective-c - 仅要求标准帐户的管理员权限

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

我正在通过我的应用程序将一些文件移动到/Applications 目录,并使用 SMJobBless() 来提升到管理员权限。

但是它会提示输入任何类型的帐户(admin 或 standard_user)的管理员凭据,我们可以使用任何 Objective-C API 进行检查并仅要求标准用户提供管理员凭据吗?

编辑 - 如果有人尝试或完成了 Dropbox 的安装过程,那么 Dropbox 安装程序也会执行相同的操作(即,它仅要求标准帐户具有管理员权限,以便将其 .app 文件复制到/应用程序)。

最佳答案

根据另一个问题的答案,我制作了一个似乎适合您的文件(我刚刚将其从 C 翻译为 Objective-C 并删除了 printf ;原始链接位于答案的末尾)。

NSPrivileges.h

#import <Foundation/Foundation.h>

@interface NSPrivileges : NSObject

+(BOOL)hasAdminPrivileges;

@end

NSPrivileges.m

#import "NSPrivileges.h"
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <strings.h>
#include <pwd.h>
#include <grp.h>

@implementation NSPrivileges

+(BOOL)hasAdminPrivileges{
uid_t current_user_id = getuid();
struct passwd *pwentry = getpwuid(current_user_id);
struct group *grentry = getgrgid(getgid());

struct group *admin_group = getgrnam("admin");
while(*admin_group->gr_mem != NULL) {
if (strcmp(pwentry->pw_name, *admin_group->gr_mem) == 0) {
return YES;
}
admin_group->gr_mem++;
}
return NO;
}

@end

现在,您只需将 NSPrivileges.h 导入到需要知道用户是否是管理员的文件中,并使用命令 [NSPrivileges hasAdminPrivileges] 来查找(它将返回a BOOL,所以很容易处理)。希望对您有帮助。

这是我的引用: Objective C and OS user type

关于objective-c - 仅要求标准帐户的管理员权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30000443/

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