2012-04-30 23 views
0

我正在嘗試爲OS X創建安裝程序。爲了能夠寫入由根(/ Applications,/ Library ...)所擁有的目錄,我正在使用安全框架中的授權服務。以下代碼對管理員用戶正常工作但對標準用戶失敗。權限的創建沒有錯誤消息,但該進程仍然以較低的權限運行(沒有文件寫入提到的位置)。OS X,從標準用戶啓動時,應用程序無法獲得root previliges

當然,我使用admin用戶的登錄名/密碼進行驗證。

AuthorizationRef authRef; 

    char rightName[] = "system.install.root.user"; 
    AuthorizationItem kActionRight = { rightName, 0, 0, 0 }; 
    AuthorizationRights rights = {1, &kActionRight}; 
    AuthorizationFlags flags=kAuthorizationFlagExtendRights|kAuthorizationFlagInteractionAllowed; 

    OSStatus err = AuthorizationCreate(&rights, 0, flags, &authRef); 

    // [ write to a file in /Applications; doesn't work with standard users ] 

    if (authRef != 0) 
     AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);  

我知道有使用AuthorizationExecuteWithPrivileges()的例子,但因爲這是OS X 10.7不贊成我寧願避免使用它。任何想法我做錯了什麼,或者我需要做什麼來獲得root權限?

感謝您的幫助,

克里斯

回答

0

也許你需要使用的,而不是寫自己的安裝程序PackageMaker。這節省了您的時間......並且依賴於您的要求,您可以使用HelperTools,它會自動將二進制文件複製到/ Library ...

+0

這是一個web安裝程序,因此PackageMaker不是真正的選項。我會看看HelperTools。 – user1365581

+0

什麼是webinstaller? – toohtik

相關問題