سؤال

ما هي الطريقة الصحيحة لتشغيل شيء مثل $sudo touch folder_name أو $sudo rm من داخل Objective-C/Cocoa؟ أقوم بتغيير بعض الملفات وأتحرك حول بعض الملفات وأحتاج إلى امتيازات مرتفعة. أي عينة رمز سيكون موضع تقدير كبير. شكرًا.

هل كانت مفيدة؟

المحلول

طريقة واحدة للقيام بذلك هي AuthorizationExecuteWithPrivileges(), ، لكن هذا محبط للمسار الطبيعي للأشياء. بشكل أساسي للمثبتات ، أجمع.

شيء مثل:

AuthorizationRef auth = NULL;
OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagInteractionAllowed, &auth);
err = AuthorizationExecuteWithPrivileges(auth, command, kAuthorizationFlagDefaults, args, NULL);

وتضيف فحصًا مناسبًا لـ err...

انظر تفويض توثيق.

نصائح أخرى

هناك عدة طرق للقيام بذلك. أي واحد تختاره يعتمد على ما تريد القيام به. إن أبسط طريقة وأكثرها غير ضرورية هي تعيين S-bit البسيط على أداة مساعدة إضافية تتصل بها من التعليمات البرمجية الخاصة بك وتفعل ما يحتاج إلى حقوق المسؤول. ألق نظرة على BetterAuthorizationsample للحصول على أكثر الطرق الفاخرة والتعقيد لتنفيذ رمز مميز.

ال دليل برمجة خدمات التفويض يمنحك كل ما تحتاجه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top