несколько AuthorizationExecuteWithPrivileges - PullRequest
1 голос
/ 24 мая 2011

Моему приложению требуется аутентификация для записи в файл hosts.Я могу сделать это, используя следующий фрагмент кода, который я называю.Моя проблема заключается в том, что, когда иногда пользователю потребуется внести это изменение более одного раза в этом экземпляре программы - диалоговое окно с запросом пароля появляется только при первом вызове, и даже если функция вызывается позжезапрос пароля не показывает.Кто-нибудь может пролить свет на это?спасибо.

- (void)someFunction {
    AuthorizationRef authorizationRef;
    OSStatus status;
    status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment,
         kAuthorizationFlagDefaults, &authorizationRef);

    //Run the tool using the authorization reference
    char *tool = "/bin/mv";
    char *args[] = { "-f", "/tmp/hosts", "/etc/hosts" };
    FILE *pipe = NULL;
    status = AuthorizationExecuteWithPrivileges(authorizationRef,
           tool, kAuthorizationFlagDefaults, args, &pipe);
}

1 Ответ

2 голосов
/ 25 мая 2011

Если вы хотите принудительно выполнить повторную аутентификацию, вы должны позвонить

    status = AuthorizationFree (authorizationRef, kAuthorizationFlagDestroyRights);

после AuthorizationExecuteWithPrivileges

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...