Re: Calling SMJobBless with valid AuthorizationRef
Michael McCracken <[email protected]> Mon, 5 Nov 2012 08:15:46 -0800
| Newsgroups | gmane.comp.python.pyobjc.devel |
|---|---|
| Message-ID | <CAG-gt+yCgjv+anOB8YhqH4p-nPtzUB7GQrZz81y0Ls-QAAgkUw@mail.gmail.com> |
Hi Kunal, I recently wrote some code to call SMJobBless and SMJobRemove using only ctypes. This was lots of boilerplate but works reliably. It's GPL, so you can see the code here: http://bazaar.launchpad.net/~ubuntuone-control-tower/ubuntuone-control-panel/trunk/view/head:/ubuntuone/controlpanel/utils/darwin.py Please feel free to ask me if you have any questions. -mike On Mon, Nov 5, 2012 at 1:56 AM, Ronald Oussoren <[email protected]>wrote: > > On 5 Nov, 2012, at 2:59, Kunal Parmar <[email protected]> wrote: > > > I'm getting an error when calling SMJobBless - "ValueError: > depythonifying 'pointer', got 'LP_c_void_p'". I've tried a few things > without luck. Any help will be appreciated. > > It's currently not easily possible to use ctypes with PyObjC, I've filed > an issue in my bitbucket about adding ctypes support to pyobjc < > https://bitbucket.org/ronaldoussoren/pyobjc/issue/23/add-ctypes-support>. > > Anoyingly the Security framework is not easily wrapped using the normal > PyObjC mechanism's either, in particular support for C structs that contain > pointers is lacking right now. I'll have to experiment a little to see if I > can get your example to work properly using some other hacks. > > Ronald > > > > > > Here's my code - > > > > from ServiceManagement import ( > > kSMDomainSystemLaunchd, > > SMJobBless, > > ) > > > > security = ctypes.cdll.LoadLibrary(ctypes.util.find_library('Security')) > > > > class AuthorizationItem(ctypes.Structure): > > _fields_ = [ > > ('name', ctypes.c_char_p), > > ('valueLength', ctypes.c_uint32), > > ('value', ctypes.c_void_p), > > ('flags', ctypes.c_uint32), > > ] > > > > class AuthorizationRights(ctypes.Structure): > > _fields_ = [ > > ('count', ctypes.c_uint32), > > ('items', ctypes.POINTER(AuthorizationItem)), > > ] > > > > authorization_item = AuthorizationItem( > > name='com.apple.ServiceManagement.blesshelper', > > valueLength=0, > > value=None, > > flags=0, > > ) > > authorization_rights = AuthorizationRights( > > count=1, > > items=ctypes.pointer(authorization_item), > > ) > > authorization_flags = 19 > > authorization_ref = ctypes.POINTER(ctypes.c_void_p)() > > status = security.AuthorizationCreate( > > ctypes.pointer(authorization_rights), > > None, > > authorization_flags, > > ctypes.pointer(authorization_ref), > > ) > > SMJobBless( > > kSMDomainSystemLaunchd, > > 'app.helper', > > authorization_ref, > > None, > > ) > > > ------------------------------------------------------------------------------ > > LogMeIn Central: Instant, anywhere, Remote PC access and management. > > Stay in control, update software, and manage PCs from one command center > > Diagnose problems and improve visibility into emerging IT issues > > Automate, monitor and manage. Do more in less time with Central > > > http://p.sf.net/sfu/logmein12331_d2d_______________________________________________ > > Pyobjc-dev mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > > > > ------------------------------------------------------------------------------ > LogMeIn Central: Instant, anywhere, Remote PC access and management. > Stay in control, update software, and manage PCs from one command center > Diagnose problems and improve visibility into emerging IT issues > Automate, monitor and manage. Do more in less time with Central > http://p.sf.net/sfu/logmein12331_d2d > _______________________________________________ > Pyobjc-dev mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > ------------------------------------------------------------------------------ LogMeIn Central: Instant, anywhere, Remote PC access and management. Stay in control, update software, and manage PCs from one command center Diagnose problems and improve visibility into emerging IT issues Automate, monitor and manage. Do more in less time with Central http://p.sf.net/sfu/logmein12331_d2d _______________________________________________ Pyobjc-dev mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/pyobjc-dev