Admin loginitem

GoogleUpdaterを停止させる

色々やったが、結局期待値になるのはこの方法
MDM使っても期待値にならなかった…トホホ強敵
LaunchAgents
com.google.keystone.xpcservice.plist
com.google.keystone.agent.plist
com.google.GoogleUpdater.wake.plist
のファイル内容を空=0バイトにしてロックしてしまう

Screen_20231127_10_41_49

#!/bin/bash -p
#com.cocolog-nifty.quicktimer.icefloe
#
#################################################
##ファイルを確認 エラーよけ
/usr/bin/touch "$HOME/Library/LaunchAgents/com.google.GoogleUpdater.wake.plist"
/usr/bin/touch "$HOME/Library/LaunchAgents/com.google.keystone.agent.plist"
/usr/bin/touch "$HOME/Library/LaunchAgents/com.google.keystone.xpcservice.plist"
##ロック解除
/usr/bin/chflags nouchg "$HOME/Library/LaunchAgents/com.google.GoogleUpdater.wake.plist"
/usr/bin/chflags nouchg "$HOME/Library/LaunchAgents/com.google.keystone.agent.plist"
/usr/bin/chflags nouchg "$HOME/Library/LaunchAgents/com.google.keystone.xpcservice.plist"
##ACL初期化
/bin/chmod -N "$HOME/Library/LaunchAgents/com.google.GoogleUpdater.wake.plist"
/bin/chmod -N "$HOME/Library/LaunchAgents/com.google.keystone.agent.plist"
/bin/chmod -N "$HOME/Library/LaunchAgents/com.google.keystone.xpcservice.plist"
##ファイルを削除
/bin/rm  "$HOME/Library/LaunchAgents/com.google.GoogleUpdater.wake.plist"
/bin/rm  "$HOME/Library/LaunchAgents/com.google.keystone.agent.plist"
/bin/rm  "$HOME/Library/LaunchAgents/com.google.keystone.xpcservice.plist"
##空のファイルを生成
/usr/bin/touch "$HOME/Library/LaunchAgents/com.google.GoogleUpdater.wake.plist"
/usr/bin/touch "$HOME/Library/LaunchAgents/com.google.keystone.agent.plist"
/usr/bin/touch "$HOME/Library/LaunchAgents/com.google.keystone.xpcservice.plist"
##アクセス権変更
/bin/chmod 644 "$HOME/Library/LaunchAgents/com.google.GoogleUpdater.wake.plist"
/bin/chmod 644 "$HOME/Library/LaunchAgents/com.google.keystone.agent.plist"
/bin/chmod 644 "$HOME/Library/LaunchAgents/com.google.keystone.xpcservice.plist"
##ロック
/usr/bin/chflags uchg "$HOME/Library/LaunchAgents/com.google.GoogleUpdater.wake.plist"
/usr/bin/chflags uchg "$HOME/Library/LaunchAgents/com.google.keystone.agent.plist"
/usr/bin/chflags uchg "$HOME/Library/LaunchAgents/com.google.keystone.xpcservice.plist"

exit 0


|

[loginitem]ログイン項目

Screen_20230916_16_04_49



macOS12以降
『ログイン時に開く』『バックグラウンドので実行を許可」の両方とも
基本『com.apple.backgroundtaskmanagement』で全て管理されるように変わっている
『BackgroundItems-v8.btm』『backgrounditems.btm』は
内容はPlistですがKeyedArchiverでアーカイブされているので
普通に値を変更するのは難易度がかなり高い。LSSharedFileListのように解凍方法がわかれば良いのだが
それでもローカルユーザー全ての内容が1ファイルになっているので難易度は高そう
現時点では編集する方法は見つからない。
『ログイン時に開く』については、
Apple ScriptのSystemEventか
Mobileconfigを使ったプロファイル指定の2択になる。
Mobileconfigを使った『ログイン時に開く』の設定は『com.apple.backgroundtaskmanagement』には登録されない


A:ログイン時に開く
B:バックグラウンドで実行


A:ログイン時に開く
[loginitem]ログイン項目
https://quicktimer.cocolog-nifty.com/icefloe/2023/08/post-6a1380.html



B:バックグラウンドで実行
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-038723.html

|

[ログイン項目]【A】ログイン時に開く

Screen_20230916_16_04_49





A:ログイン時に開く
B:バックグラウンドで実行
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-038723.html


A:ログイン時に開く
1:『ログイン時に開く』の内容を取得する
2:『ログイン時に開く』に項目を追加する
3:『ログイン時に開く』の項目を削除する
4:『ログイン時に開く』の項目を管理する
5:『ログイン時に開く』の項目を作る(隠す)



1:『ログイン時に開く』の内容を取得する
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-15df90.html
2:『ログイン時に開く』に項目を追加する
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-cbf9e7.html
3:『ログイン時に開く』の項目を削除する
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-13ba71.html
4:『ログイン時に開く』の項目を管理する
登録済みの内容の変更は出来ないので、内容の変更は削除して新規登録となる
5:『ログイン時に開く』の項目を作る(隠す)
https://quicktimer.cocolog-nifty.com/icefloe/2023/07/post-0f96e7.html
起動後に隠すスクリプト
[起動項目用]アプリケーションを起動後隠す
https://quicktimer.cocolog-nifty.com/icefloe/2023/08/post-6047e8.html

|

[ログイン項目]【B】バックグラウンドで実行

Screen_20230916_16_04_49





A:ログイン時に開く
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-5e6b36.html
B:バックグラウンドで実行


B:バックグラウンドで実行
1:登録内容の確認
2:登録内容の削除(リセット)
3:登録内容の変更
4:登録


1:登録内容の確認
/usr/bin/sudo /usr/bin/sfltool dumpbtm


2:登録内容の削除(リセット)

/usr/bin/sudo /usr/bin/sfltool resetbtm
/usr/bin/sudo /usr/bin/sfltool resetlist com.apple.LSSharedFileList.ManagedSessionLoginItems
/usr/bin/sudo /usr/bin/sfltool clear com.apple.LSSharedFileList.ManagedSessionLoginItems


元になっているデータ
/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist

の内容はリセットされない(リードオンリーでユーザーは書き込み出来ない)



3:登録内容の変更
4:登録


主要パス
######################
##システムドメイン
/System/Library/LaunchAgents
/System/Library/LaunchAgents
/System/Library/LoginItems
######################
##ローカルドメイン
/Library/LaunchAgents
/Library/LaunchDaemons
/Library/LoginItems
######################
##アプリケーションドメイン
/Applications/アプリ名.app/Contents/Library/LaunchAgents
/Applications/アプリ名.app/Contents/Library/LaunchDaemons
/Applications/アプリ名.app/Contents/Library/LaunchServices
/Applications/アプリ名.app/Contents/Library/LoginItems
######################
##ユーザードメイン
/Users/ユーザー名/Library/LaunchAgents
/Users/ユーザー名/Library/LoginItems
/Users/ユーザー名/Library/StartupItems


/usr/bin/sudo /usr/bin/sfltool -h
Usage: sfltool csinfo|dumpbtm|archive|clear|resetbtm|resetlist|list|list-info [options]


sfltool(1) General Commands Manual sfltool(1)

NAME
sfltool – tool for testing and debugging SharedFileList.

SYNOPSIS
sfltool [archive [-z]]

DESCRIPTION
sfltool a tool for testing and debugging SharedFileList. sfltool archive
[-z] creates a directory containing a snapshot of the content of the
SharedFileList persistant store locations. Adding -z will archive the a
directory.

FILES
/usr/bin/sfltool executable

Darwin 8/9/12 Darwin


/usr/bin/sudo /usr/bin/sfltool list
Password:
com.apple.LSSharedFileList.RecentServers
com.apple.LSSharedFileList.SharePoints
com.apple.LSSharedFileList.FavoriteItems
com.apple.LSSharedFileList.SavedSearches
com.apple.LSSharedFileList.ManagedShared
com.apple.LSSharedFileList.RecentHosts
com.apple.LSSharedFileList.RecentDocuments
com.apple.LSSharedFileList.SessionLoginItems
com.apple.LSSharedFileList.AutomountedServers
com.apple.LSSharedFileList.SFLLaunchdJobs
com.apple.LSSharedFileList.SFLServiceManagementLoginItems
com.apple.LSSharedFileList.FavoriteServers
com.apple.LSSharedFileList.FavoriteVolumes
com.apple.LSSharedFileList.ApplicationRecentDocuments
com.apple.LSSharedFileList.iCloudItems
com.apple.LSSharedFileList.DockApplications
com.apple.LSSharedFileList.GlobalLoginItems
com.apple.LSSharedFileList.RecentApplications
com.apple.LSSharedFileList.NetworkBrowser
com.apple.LSSharedFileList.ProjectsItems
com.apple.LSSharedFileList.ManagedSessionLoginItems

|

2:『ログイン時に開く』に項目を追加する

A:AppleScriptを使う
B:AppleScriptを使う(in bash)
C:Mobileconfigプロファイルを使う

A:AppleScriptを使う

【スクリプトエディタで開く】|

####ログインアイテムの内容
tell application "System Events"
  set listLoginItem to (every login item) as list
  log listLoginItem as list
  repeat with itemLoginItem in listLoginItem
    tell itemLoginItem
      properties
    end tell
  end repeat
end tell
###追加する
tell application "System Events"
make login item at end with properties {name:"Font Book", path:"/System/Applications/Font Book.app", class:login item, kind:"アプリケーション", hidden:true}
end tell


B:AppleScriptを使う(in bash)

【スクリプトエディタで開く】|

#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
#
#################################################
/usr/bin/osascript <<- EOF
tell application "System Events"
make login item at end with properties {name:"Font Book", path:"/System/Applications/Font Book.app", class:login item, kind:"アプリケーション", hidden:true}
end tell
EOF

exit 0



C:Mobileconfigプロファイルを使う

【スクリプトエディタで開く】|

<dict>
      <key>AutoLaunchedApplicationDictionary-managed</key>
      <array>
<dict>
<key>AuthenticateAsLoginUserShortName</key>
<false/>
<key>Hide</key>
<true/>
<key>Path</key>
<string>/System/Applications/Font Book.app</string>
</dict>
      </array>
      <key>PayloadDisplayName</key>
      <string>Login Items</string>
      <key>PayloadDescription</key>
      <string>com.apple.loginitems.managed</string>
      <key>PayloadIdentifier</key>
      <string>com.apple.loginitems.managed.C64F05A3-5F67-4D53-846A-271095EB1846</string>
      <key>PayloadType</key>
      <string>com.apple.loginitems.managed</string>
      <key>PayloadUUID</key>
      <string>753B029B-6BB4-4B8B-B79C-B4DDA4C940E3</string>
      <key>PayloadOrganization</key>
      <string>com.cocolog-nifty.quicktimer</string>
      <key>TargetDeviceType</key>
      <integer>5</integer>
      <key>PayloadVersion</key>
      <integer>1</integer>
    </dict>

|

3:『ログイン時に開く』の項目を削除する

全削除は
backgrounditems.btmを削除して再起動 または、 
AppleScriptを使って全削除(再起動不要)
その後でmobileconfigで登録が良いような気がする
『BackgroundItems-v8.btm』は全ローカルユーザー共通なので
全てのローカルユーザーに影響がある事をお忘れなく
backgrounditems.btm(無い場合もある)
/Users/ユーザー名/Library/Application Support/com.apple.backgroundtaskmanagementagent/backgrounditems.btm
BackgroundItems-v8.btm(全ユーザー共通なので配慮が必要)
/private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v8.btm

【スクリプトエディタで開く】|

####ログインアイテムの内容
tell application "System Events"
  set listLoginItem to (every login item) as list
  log listLoginItem as list
  repeat with itemLoginItem in listLoginItem
    tell itemLoginItem
      properties
    end tell
  end repeat
end tell


【スクリプトエディタで開く】|

####ログインアイテムを選択削除
set listItemName to {} as list
tell application "System Events"
  set listLoginItem to (every login item) as list
  log listLoginItem as list
  repeat with itemLoginItem in listLoginItem
    tell itemLoginItem
      set strItemName to name as text
      set end of listItemName to strItemName
    end tell
  end repeat
end tell
set strName to (name of current application) as text
##
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
try
  set listResponse to (choose from list listItemName with title "選んでください" with prompt "選んでください" default items (item 1 of listItemName) OK button name "OK" cancel button name "キャンセル" without multiple selections allowed and empty selection allowed) as list
on error
  log "エラーしました"
return "エラーしました"
end try
if (item 1 of listResponse) is false then
return "キャンセルしました"
end if
set strItemName to (item 1 of listResponse) as text
####選択した名前だけ削除
tell application "System Events"
  delete login item strItemName
end tell


【スクリプトエディタで開く】|

####全部削除
tell application "System Events"
  set listLoginItem to every login item
  repeat with objLoginItem in listLoginItem
    tell objLoginItem
      set strName to name as text
    end tell
delete login item strName
  end repeat
end tell

|

1:『ログイン時に開く』の内容を取得する


【スクリプトエディタで開く】|

####ログインアイテムの個数
tell application "System Events"
  set listLoginItem to every login item
  set numCnt to count listLoginItem
  log numCnt
end tell


【スクリプトエディタで開く】|

####ログインアイテムの内容
tell application "System Events"
  set listLoginItem to (every login item) as list
  log listLoginItem as list
  repeat with itemLoginItem in listLoginItem
    tell itemLoginItem
      properties
    end tell
  end repeat
end tell


【スクリプトエディタで開く】|

####ログインアイテムの内容を選べるようにする
set listItemName to {} as list
tell application "System Events"
  set listLoginItem to (every login item) as list
  log listLoginItem as list
  repeat with itemLoginItem in listLoginItem
    tell itemLoginItem
      set strItemName to name as text
      set end of listItemName to strItemName
    end tell
  end repeat
end tell
set strName to (name of current application) as text
##
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
try
  set listResponse to (choose from list listItemName with title "選んでください" with prompt "選んでください" default items (item 1 of listItemName) OK button name "OK" cancel button name "キャンセル" without multiple selections allowed and empty selection allowed) as list
on error
  log "エラーしました"
return "エラーしました"
end try
if (item 1 of listResponse) is false then
return "キャンセルしました"
end if


コマンド ログイン時に開くに登録されている項目は概ね
##スクリプトなら
/usr/bin/sudo /usr/bin/sfltool dumpbtm
##ターミナルからなら(この方が指紋認証使える)
/usr/bin/sfltool dumpbtm

 Disposition: [enabled, allowed, visible, not notified] (3)
が戻る
UUID: 8020B707-EB13-4D54-A01B-CCBB52CE807D
Name: Font Book.app
       Developer Name: (null)
Type: app (0x2)
Disposition: [enabled, allowed, visible, not notified] (3)
Identifier: identifier "com.apple.FontBook" and anchor apple
URL: file:///System/Applications/Font%20Book.app/
Generation: 0
    Bundle Identifier: com.apple.FontBook

|

com.apple.xpc.launchdのloginitemsの項目を選んで削除


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
# 要管理者権限
# com.apple.xpc.launchdのloginitemsから不要な項目を削除します
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "Appkit"
use scripting additions
property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()
####################################
###パス
####################################
##UID取得
set recordSystemInfo to (system info) as record
set stUID to (user ID of recordSystemInfo) as text
set strUNAME to (short user name of recordSystemInfo) as text
##ファイル名 loginitems
set strPlistFileName to ("loginitems." & stUID & ".plist") as text
##パス
set strXpcDirPath to ("/private/var/db/com.apple.xpc.launchd/") as text
set strFilePath to ("" & strXpcDirPath & strPlistFileName & "") as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
####################################
###アクセス権変更
####################################
set strCommandText to ("/usr/bin/sudo /usr/sbin/chown -Rf " & strUNAME & " \"" & strXpcDirPath & "\"") as text
do shell script strCommandText with administrator privileges
####################################
###PLIST
####################################
### 読み込み
set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithContentsOfURL:(ocidFilePathURL)
###AllKey
set ocidAllKyesArray to ocidPlistDict's allKeys()
set listAllKyesArray to ocidAllKyesArray as list
####################################
###ダイアログ
####################################
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder"
    activate
  end tell
else
  tell current application
    activate
  end tell
end if
try
  set listResponse to (choose from list listAllKyesArray with title "選んでください" with prompt "削除する項目を選んでください" default items (item 1 of listAllKyesArray) OK button name "OK" cancel button name "キャンセル" with multiple selections allowed without empty selection allowed) as list
on error
  ####################################
  ###アクセス権 を戻す
  ####################################
  set strCommandText to ("/usr/bin/sudo /usr/sbin/chown -Rf root \"" & strXpcDirPath & "\"") as text
  do shell script strCommandText with administrator privileges
  log "エラーしました"
return "エラーしました"
end try
if (item 1 of listResponse) is false then
  ####################################
  ###アクセス権 を戻す
  ####################################
  set strCommandText to ("/usr/bin/sudo /usr/sbin/chown -Rf root \"" & strXpcDirPath & "\"") as text
  do shell script strCommandText with administrator privileges
return "キャンセルしました"
end if

####################################
### 本処理項目削除
####################################
repeat with itemResponse in listResponse
  set strItemKey to itemResponse as text
(ocidPlistDict's removeObjectForKey:(strItemKey))
  
end repeat

####################################
### 保存
####################################
set listDone to ocidPlistDict's writeToURL:(ocidFilePathURL) |error|:(reference)

####################################
###アクセス権 を戻す
####################################
set strCommandText to ("/usr/bin/sudo /usr/sbin/chown -Rf root \"" & strXpcDirPath & "\"") as text
do shell script strCommandText with administrator privileges


|

[起動項目用]アプリケーションを起動後隠す


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use framework "Appkit"
use framework "UniformTypeIdentifiers"
use scripting additions
property refMe : a reference to current application
##############################################
##設定項目
##############################################
##ディレクトリ名
set strDirName to ("Loginitems") as text
###オールドユーザーはこちらかな?
# set strDirName to ("StartupItems") as text
###起動項目のバンドルID
set strBundleID to ("com.apple.FontBook") as text
set strAppFileName to (strBundleID & ".app") as text
###起動項目APPに隠すを入れるか?
set boolSetHide to true as boolean

#####################################
#####スクリプトメニューから実行させない
#####################################
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder"
    set aliasPathToMe to path to me as alias
    tell application "Script Editor"
      open aliasPathToMe
    end tell
return "中止しました"
  end tell
else
  tell current application
    activate
  end tell
end if
#####################################
##アプリケーション(起動項目用)を作成する
#####################################

###スクリプトパス
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
###Loginitems
set ocidLoginitemsDirPathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Loginitems")
###フォルダを作る
set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidLoginitemsDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)
###保存先
set ocidLoginitemsAppPathURL to ocidLoginitemsDirPathURL's URLByAppendingPathComponent:(strAppFileName)
set aliasAppFilePath to (ocidLoginitemsAppPathURL's absoluteURL()) as «class furl»



set strScript to ("#!/usr/bin/env osascript\n----+----1----+----2----+-----3----+----4----+----5----+----6----+----7\n#\n(*\nログイン項目登録用\n起動時に起動後『隠す』処理\nファイル>書き出す…からアプリケーションに書き出し\nログイン項目に登録する\n設定項目のバンドルIDは\nhttps://github.com/force4u/AppleScript/blob/main/Script%20Menu/Developer/Get/getAppBundleID.applescript\nを使って取得できます\n*)\n#com.cocolog-nifty.quicktimer.icefloe\n----+----1----+----2----+-----3----+----4----+----5----+----6----+----7\nuse AppleScript version \"2.8\"\nuse framework \"Foundation\"\nuse scripting additions\n###設定項目\nset strBundleID to (\"" & strBundleID & "\") as text\n###起動\ntell application id strBundleID\nlaunch\nend tell\ndelay 3\n###起動待ち 最大60回\nrepeat 60 times\ntell application id strBundleID\nactivate\nset boolFrontMost to frontmost as boolean\nend tell\nif boolFrontMost is true then\nexit repeat\nelse\ndelay 0.25\nend if\nend repeat\n###名前の取得\ntell application id strBundleID\nset strAppName to name as text\nend tell\n###隠す処理\ntell application \"System Events\"\ntell application process strAppName\nset visible to false\nend tell\nend tell") as text


tell application "Script Editor"
  
  make new document with properties {contents:strScript}
  tell front document
    activate
compile
  end tell
  save front document as "application" in aliasAppFilePath without run only, startup screen and stay open
  close front document saving no
end tell



#####################################
##アプリケーション(起動項目用)を作成する
#####################################

###バンドル
set ocidAppBundle to refMe's NSBundle's bundleWithURL:(ocidLoginitemsAppPathURL)
###基本情報を取得
set ocidInfoDict to ocidAppBundle's infoDictionary
set ocidBundleName to ocidInfoDict's valueForKey:("CFBundleName")
set ocidBundleDisplayName to ocidInfoDict's valueForKey:("CFBundleDisplayName")
###ローカライズ名を取得する
set ocidBundleDisplayNameLocalizable to ocidAppBundle's localizedStringForKey:("CFBundleDisplayName") value:("") table:("InfoPlist")
if (ocidBundleDisplayNameLocalizable as text) is "CFBundleDisplayName" then
  set ocidBundleDisplayNameLocalizable to ocidBundleDisplayName
end if
if (ocidBundleDisplayNameLocalizable as text) is "" then
  set ocidBundleDisplayNameLocalizable to ocidBundleName
end if

set strAppName to ocidBundleDisplayNameLocalizable as text
set strAppPath to (ocidLoginitemsAppPathURL's |path|()) as text
log "strAppName:" & strAppName

tell application "System Events"
  if boolSetHide is true then
    set recordProperties to {name:strAppName, path:strAppPath, class:login item, kind:"アプリケーション", hidden:true}
  else
    set recordProperties to {name:strAppName, path:strAppPath, class:login item, kind:"アプリケーション", hidden:false}
  end if
end tell

####ログインアイテム 設定開始時
log "設定前:"
tell application "System Events"
  set listLoginItem to every login item
  set listOutPut to {} as list
  repeat with itemLoginItem in listLoginItem
    tell itemLoginItem
      set recordProperties to properties
      set end of listOutPut to recordProperties
    end tell
  end repeat
end tell

####ログインアイテム 設定
log "設定:"
tell application "System Events"
  make login item at end with properties recordProperties
end tell


####ログインアイテム 設定後
log "設定後:"
tell application "System Events"
  set listLoginItem to every login item
  set listOutPut to {} as list
  repeat with itemLoginItem in listLoginItem
    tell itemLoginItem
      set recordProperties to properties
      set end of listOutPut to recordProperties
    end tell
  end repeat
end tell

###ログイン項目を開く
tell application id "com.apple.systempreferences"
  launch
  activate
reveal anchor "startupItemsPref" of pane id "com.apple.LoginItems-Settings.extension"
end tell

|

[loginitem]ログイン項目(ログイン時に開く)

ユーザーケースにもよるが
全削除は
backgrounditems.btmを削除して再起動 または、 
AppleScriptを使って全削除(再起動不要)
その後でmobileconfigで登録が良いような気がする
『BackgroundItems-v8.btm』は全ローカルユーザー共通なので
全てのローカルユーザーに影響がある事をお忘れなく



ログイン時に開くに登録されている項目は概ね

【スクリプトエディタで開く】|

##スクリプトなら
/usr/bin/sudo /usr/bin/sfltool dumpbtm
##ターミナルからなら(こほ方が指紋認証使える)
/usr/bin/sfltool dumpbtm



 Disposition: [enabled, allowed, visible, not notified] (3)

が戻る
UUID: 8020B707-EB13-4D54-A01B-CCBB52CE807D
Name: Font Book.app
       Developer Name: (null)
Type: app (0x2)
Disposition: [enabled, allowed, visible, not notified] (3)
Identifier: identifier "com.apple.FontBook" and anchor apple
URL: file:///System/Applications/Font%20Book.app/
Generation: 0
    Bundle Identifier: com.apple.FontBook



A:AppleScriptで登録削除
B:mobileconfigを利用して登録
C:"backgrounditems.btm"を操作する
D:LoginHookを利用して起動させる
E:LaunchAgentsを利用して起動させる


A:AppleScriptで登録削除
項目の内容については、リードオンリーなので削除ー>新規登録が基本

login itemn : an item to be launched or opened at login

elements

contained by application.

properties

hidden (boolean) : Is the Login Item hidden when launched?

kind (text, r/o) : the file type of the Login Item

name (text,r/o) : the name of the Login Item

path (text, r/o) : the file system path to the Login Item



####ログインアイテムの個数
tell application "System Events"
set listLoginItem to every login item
set numCnt to count listLoginItem
end tell


####全部削除
tell application "System Events"
set listLoginItem to every login item
repeat with objLoginItem in listLoginItem
tell objLoginItem
set strName to name as text
end tell
delete login item strName
end repeat
end tell


####追加
tell application "System Events"
make login item at end with properties {name:"Font Book", path:"/System/Applications/Font Book.app", class:login item, kind:"アプリケーション", hidden:true}
end tell

###削除
tell application "System Events"
delete login item "Adobe Acrobat Synchronizer"
end tell




B:mobileconfigを利用して登録
例としてはこんな感じ

<dict>

    <key>PayloadUUID</key>

    <string>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX</string>

    <key>PayloadType</key>

    <string>com.apple.loginitems.managed</string>

    <key>PayloadOrganization</key>

    <string>com.foo-hoge</string>

    <key>PayloadIdentifier</key>

    <string>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX</string>

    <key>PayloadDisplayName</key>

    <string>com.apple.loginitems.managed</string>

    <key>PayloadDescription</key>

    <string>com.apple.loginitems.managed</string>

    <key>PayloadVersion</key>

    <integer>1</integer>

    <key>PayloadEnabled</key>

    <true/>

    <key>AutoLaunchedApplicationDictionary-managed</key>

    <array>

        <dict>

            <key>Hide</key>

            <true/>

            <key>Path</key>

            <string>/System/Applications/Font Book.app</string>

        </dict>

    </array>

</dict>



C:"backgrounditems.btm"を操作する
"/Users/あなたのアカウント名/Library/Application Support/com.apple.backgroundtaskmanagementagent/backgrounditems.btm"
削除する事で全削除できる
btmファイルはバイナリー式のplist形式なんだけど、コマンドラインで編集するのは難易度高い
削除しても、再起動するまでは最後の設定が生きるので、再起動させたくない場合は選択外
-->再起動しても"backgrounditems.btm"ファイルは自動生成されない。ログイン項目登録時に自動再生成される



D:LoginHookを利用して起動させる
ローカルドメインレベルなので、ユーザー環境毎の設定には不向き
-->起動時にアプリを起動する…とかには不向き



E:LaunchAgentsを利用して起動させる
どうなんだろ…常駐系?メニューアイテム系?には良いが
普段使いするもんでも無いような…
LaunchAgentsでシェルやAplleScriptを実行させてスクリプト経由でアプリ起動ならアリだけど
意味があるのか?疑問…
ログイン時にフォントブックを開く、ユーザー環境LaunchAgents
アクセス権644が留意事項

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

    <key>Label</key>

    <string>com.foo.hoge</string>

    <key>LimitLoadToSessionType</key>

    <string>Aqua</string>

    <key>ProgramArguments</key>

    <array>

        <string>/usr/bin/open</string>

        <string>-b</string>

        <string>com.apple.FontBook</string>

    </array>

    <key>RunAtLoad</key>

    <true/>

</dict>

</plist>



ログイン項目用 起動後に隠す処理 https://quicktimer.cocolog-nifty.com/icefloe/2023/07/post-0f96e7.html [ログイン項目] hide(macOS12ごろから無効になっている) https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-fca45a.html ログイン項目用 起動後に隠す処理 https://quicktimer.cocolog-nifty.com/icefloe/2023/07/post-0f96e7.html [ログイン項目] hide(macOS12ごろから無効になっている) https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-fca45a.html

ログインアイテム全部削除
https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-5a2eed.html
ログインアイテムから取り除く
https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-eed5cd.html
[mobileconfig] com.apple.loginwindow
https://quicktimer.cocolog-nifty.com/icefloe/2022/10/post-6585be.html
[loginitem]ログイン項目 スクリプトサンプル
https://quicktimer.cocolog-nifty.com/icefloe/2022/05/post-813b9c.html


|

その他のカテゴリー

Acrobat Acrobat Annotation Acrobat Dialog Acrobat Form Acrobat JS Acrobat Open Acrobat Plugin Acrobat python Acrobat Reader Acrobat Sequ Acrobat Stamps Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin System Information Admin Tools Admin Users Admin Volumes Adobe Apple AppleScript AppleScript Guide AppleScript Accessibility AppleScript AppKit AppleScript Applications AppleScript AppStore AppleScript Archive AppleScript Attributes AppleScript Automator AppleScript AVAsset AppleScript AVconvert AppleScript AVFoundation AppleScript AVURLAsset AppleScript BackUp AppleScript Barcode AppleScript Bash AppleScript Basic AppleScript Basic Path AppleScript Bluetooth AppleScript BOX AppleScript Browser AppleScript Calendar AppleScript CD/DVD AppleScript Choose AppleScript Chrome AppleScript CIImage AppleScript CloudStorage AppleScript Color AppleScript com.apple.LaunchServices.OpenWith AppleScript Console AppleScript Contacts AppleScript CotEditor AppleScript CURL AppleScript current application AppleScript Date&Time AppleScript delimiters AppleScript Desktop AppleScript Device AppleScript Disk AppleScript do shell script AppleScript Dock AppleScript DropBox AppleScript eMail AppleScript Encode Decode AppleScript Error AppleScript EXIFData AppleScript ffmpeg AppleScript File AppleScript Finder AppleScript Firefox AppleScript Folder AppleScript Fonts AppleScript GIF AppleScript HTML AppleScript Icon AppleScript Illustrator AppleScript Image Events AppleScript Image2PDF AppleScript ImageOptim Applescript iWork AppleScript Javascript AppleScript Jedit AppleScript Json AppleScript Label AppleScript List AppleScript locationd AppleScript LRC AppleScript LSSharedFileList AppleScript m3u8 AppleScript MakePDF AppleScript Map AppleScript Math AppleScript Microsoft AppleScript Microsoft Edge AppleScript Microsoft Excel AppleScript Mobileconfig AppleScript Mouse AppleScript Movie AppleScript Music AppleScript NetWork AppleScript Notes AppleScript NSArray AppleScript NSBitmapImageRep AppleScript NSBundle AppleScript NSCFBoolean AppleScript NSCharacterSet AppleScript NSColor AppleScript NSColorList AppleScript NSData AppleScript NSDictionary AppleScript NSError AppleScript NSEvent AppleScript NSFileAttributes AppleScript NSFileManager AppleScript NSFont AppleScript NSFontManager AppleScript NSImage AppleScript NSIndex AppleScript NSKeyedArchiver AppleScript NSKeyedUnarchiver AppleScript NSLocale AppleScript NSMutableArray AppleScript NSMutableDictionary AppleScript NSMutableString AppleScript NSNotFound AppleScript NSNumber AppleScript NSOpenPanel AppleScript NSPasteboard AppleScript NSPDFImageRep AppleScript NSpoint AppleScript NSPredicate AppleScript NSRange AppleScript NSRegularExpression AppleScript NSRunningApplication AppleScript NSScreen AppleScript NSSize AppleScript NSString AppleScript NSStringCompareOptions AppleScript NSTask AppleScript NSTimeZone AppleScript NSURL AppleScript NSURL File AppleScript NSURLBookmark AppleScript NSURLComponents AppleScript NSURLResourceKey AppleScript NSUserDefaults AppleScript NSUUID AppleScript NSView AppleScript NSWorkspace AppleScript Numbers AppleScript OAuth AppleScript ObjC AppleScript OneDrive AppleScript Osax AppleScript PDF AppleScript PDFAnnotationWidget AppleScript PDFContext AppleScript PDFDisplayBox AppleScript PDFDocumentPermissions AppleScript PDFKit AppleScript PDFnUP AppleScript PDFOutline AppleScript Photos AppleScript Photoshop AppleScript Plist System Events AppleScript PostScript AppleScript prefPane AppleScript Preview AppleScript Python AppleScript QR AppleScript QR Decode AppleScript QuickLook AppleScript QuickTime AppleScript record AppleScript Regular Expression AppleScript Reminders AppleScript ReName AppleScript Repeat AppleScript RTF AppleScript Safari AppleScript SaveFile AppleScript ScreenCapture AppleScript ScreenSaver AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript Sort AppleScript Sound AppleScript Spotlight AppleScript SRT AppleScript StandardAdditions AppleScript stringByApplyingTransform AppleScript System Events AppleScript System Settings AppleScript TemporaryItems AppleScript Terminal AppleScript Text AppleScript Text CSV AppleScript Text TSV AppleScript TextEdit AppleScript Translate AppleScript Trash AppleScript Twitter AppleScript UI AppleScript Unit Conversion AppleScript UTType AppleScript valueForKeyPath AppleScript Video AppleScript VisionKit AppleScript Visual Studio Code AppleScript webarchive AppleScript webp AppleScript Wifi AppleScript XML AppleScript XML EPUB AppleScript XML OPML AppleScript XML Plist AppleScript XML RSS AppleScript XML SVG AppleScript XML TTML AppleScript XML webloc AppleScript YouTube AppleScript Zero Suppress Applications Barcode OnLine Tools CityCode Design iPhone List Logs lsappinfo Memo Music perl PlistBuddy pluginkit postalcode ReadMe SF Symbols character id SF Symbols Entity sips Skype Slack sqlite TCC Tools Typography Video Wacom zoom