Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8340699
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 9, 20262026-06-09T05:15:09+00:00 2026-06-09T05:15:09+00:00

I have been reading documentation and the SMJobBless example and various discussions on the

  • 0

I have been reading documentation and the SMJobBless example and various discussions on the Internet. My app now installs a privileged helper using SMJobBless(), but the helper doesn’t run at all.

The whole purpose of the helper is to load a kext, an important component of my app, whenever the application starts. I have seen examples showing that trying to connect to the helper through XPC will launch the helper, but I would like to keep my helper simple and dumb.

The API doc shows that there is a SMJobSubmit() function. What exactly does it do? Can I use it to launch the privileged helper installed previously by SMJobBless()?

I’m confused by all the terms around launchd and the Service Management Framework – for example, the “RunAtLoad” plist option controls “whether your job is launched once at the time the job is loaded”. What exactly is “load” and “launch”, and how are they related to “bless/install” and “submit”?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-09T05:15:10+00:00Added an answer on June 9, 2026 at 5:15 am

    SMJobBless will add your job to launchd’s system. See the SMJobBless sample code for doing this.

    http://developer.apple.com/library/mac/#samplecode/SMJobBless/Introduction/Intro.html

    However, the whole purpose of launchd is to control how and when the jobs are launched, and by default (in the sample code), there is no specification of actually when the job should be launched, so the job will in fact never be launched.

    Nathan de Vries wrote a very good article and sample code for using SBJobBless and communicating with the privileged job using XPC. One import side affect is, of course, that the act of trying to communicate with the launchd service will cause launchd to actually start your service, so this would solve your problem.

    http://atnan.com/blog/2012/02/29/modern-privileged-helper-tools-using-smjobbless-plus-xpc/

    And to specifically answer your question, SMJobSubmit can execute a privileged helper. It took me a long time to figure out, but the difference between the two is that SMJobSubmit will let you run an executable with privileges using launchd, while SMJobBless will add a LaunchDaemon permanently. SMJobBless’s installed executable will remain blessed, whereas SMJobSubmit will require you to re-authenticate each time.

    Note that in both cases you must SMJobRemove the previous one to ensure that a new version is used.

    So, I would think you need to either:

    • SMJobRemove, SMJobSubmit each time you launch your application, prompting the user for authentication each time. Use the RunAtLoad property in the dictionary you built to have the helper execute immediately.

    OR

    • Use Nathan’s code, XPC connect, ask it its version number, if its not update, have it quit, then SMJobRemove, SMJobBless a new version, then XPC connect and ask it to install your kext. That way the user only has to authenticate for any new version.
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have been using Google app engine for ~2 years now and love it.
I have been reading all the Apple documentation on how to handle various events
I have been reading through Intuit's new IPP Federated App documentation. I am trying
I am new to iOS app development. I have been reading the documentation on
I have been reading through the documentation on the JavaScriptMVC framework and it looks
hello im new to python and have been reading over the documentation and am
What I have been able to grasp from reading the source and documentation from
I have been reading documentation describing class inheritance, abstract base classes and even python
I have been reading through the core data documentation and feel I am still
I have been reading the API and documentation ( http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/Analysis.doc.html 9.5 Edge Detection) and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.