Logout user script

The Apple event is the most robust way to do it (but it can still be blocked by a stuck app).

Entering the special characters is tricky... here's a block you can use in a script or via ARD.

osascript -e 'ignoring application responses' -e 'tell application "loginwindow" to «event aevtrlgo»' -e end

The « and » characters are typed by option-\ and shift-option-\ respectively.

The rlgo (kAEReallyLogOut) Apple event logs out without showing a confirmation dialog:

tell application "loginwindow" to «event aevtrlgo»

tell application "System Events" to log out sends loginwindow a logo (kAELogOut) Apple event. The Apple events are listed in AERegistry.h.