Admin loginitem

BackgroundItems-v9.btmに登録されているパスを表示する(簡易版)


AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# BackgroundItems-v9の内容をダンプします
005# NSClassFromString:("Storage")が通らないので
006# NSKeyedUnarchiverで解凍できないそのためPLISTのまま解析する
007#戻り値として出るのが バックグラウンドで動作するプロセスです
008#com.cocolog-nifty.quicktimer.icefloe
009----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
010use AppleScript version "2.8"
011use framework "Foundation"
012use framework "AppKit"
013use scripting additions
014property refMe : a reference to current application
015
016set appFileManager to refMe's NSFileManager's defaultManager()
017
018# /private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v9.btm
019
020set strFilePath to ("/private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v9.btm") as text
021set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
022set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
023set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
024
025
026###################################
027#####本処理
028###################################
029# NSDataに読み込んで
030set ocidOption to (refMe's NSDataReadingMappedIfSafe)
031set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidFilePathURL) options:(ocidOption) |error| :(reference)
032if (item 2 of listResponse) = (missing value) then
033  log "initWithContentsOfURL 正常処理"
034  set ocidReadData to (item 1 of listResponse)
035else if (item 2 of listResponse) ≠ (missing value) then
036  log (item 2 of listResponse)'s code() as text
037  log (item 2 of listResponse)'s localizedDescription() as text
038  return "initWithContentsOfURL エラーしました"
039end if
040
041
042###################################
043#PLISTにする
044set ocidFormat to (refMe's NSPropertyListBinaryFormat_v1_0)
045set ocidPlistSerial to (refMe's NSPropertyListSerialization)
046set ocidOption to (refMe's NSPropertyListMutableContainersAndLeaves)
047set listResponse to ocidPlistSerial's propertyListWithData:(ocidReadData) options:(ocidOption) format:(ocidFormat) |error| :(reference)
048if (item 2 of listResponse) = (missing value) then
049  log "propertyListWithData 正常処理"
050  set ocidPlistDict to (item 1 of listResponse)
051else if (item 2 of listResponse) ≠ (missing value) then
052  log (item 2 of listResponse)'s code() as text
053  log (item 2 of listResponse)'s localizedDescription() as text
054  return "propertyListWithData エラーしました"
055end if
056#出力用のテキスト
057set ocidOutPutString to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
058(ocidOutPutString's appendString:("\n"))
059#AllKey取得
060set ocidAllKeysArray to ocidPlistDict's allKeys()
061#キーの数だけ繰り返し
062repeat with itemKeys in ocidAllKeysArray
063  #キー名で値を取り出して
064  set ocidRootObject to (ocidPlistDict's objectForKey:(itemKeys))
065  #クラスを調べて
066  set strClassName to (ocidRootObject's className()) as text
067  ##Arrayの場合は処理する
068  if strClassName contains "Array" then
069    ##Arrayの数を数えて
070    set numCntArray to ocidRootObject's |count|() as integer
071    ##Arrayの数だけ繰り返し
072    repeat with itemNo from 0 to (numCntArray - 1) by 1
073      ##Arrayの値を順番に取り出して
074      set ocidObjectItem to (ocidRootObject's objectAtIndex:(itemNo))
075      set strClassName to (ocidObjectItem's className()) as text
076      ##Arrayの場合は処理する
077      if strClassName contains "NSCFString" then
078        set boolURL to (ocidObjectItem's hasPrefix:("file:"))
079        if boolURL is true then
080          (ocidOutPutString's appendString:(ocidObjectItem))
081          (ocidOutPutString's appendString:("\n"))
082        end if
083      end if
084    end repeat
085    
086  end if
087end repeat
088
089
090return ocidOutPutString as text
AppleScriptで生成しました

|

Backgrounditems.btmに登録されているパスを表示する(簡易版)


AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# backgrounditems.btmはClassが3つに分かれていて
005# NSKeyedUnarchiverで解凍できないのでPLISTのまま解析する
006#com.cocolog-nifty.quicktimer.icefloe
007----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
008use AppleScript version "2.8"
009use framework "Foundation"
010use framework "AppKit"
011use scripting additions
012property refMe : a reference to current application
013
014set appFileManager to refMe's NSFileManager's defaultManager()
015
016
017
018set strFilePath to ("~/Library/Application Support/com.apple.backgroundtaskmanagementagent/backgrounditems.btm") as text
019set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
020set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
021set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
022
023
024###################################
025# NSDataに読み込んで
026set ocidOption to (refMe's NSDataReadingMappedIfSafe)
027set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidFilePathURL) options:(ocidOption) |error| :(reference)
028if (item 2 of listResponse) = (missing value) then
029  log "initWithContentsOfURL 正常処理"
030  set ocidReadData to (item 1 of listResponse)
031else if (item 2 of listResponse) ≠ (missing value) then
032  log (item 2 of listResponse)'s code() as text
033  log (item 2 of listResponse)'s localizedDescription() as text
034  return "initWithContentsOfURL エラーしました"
035end if
036
037###################################
038#PLISTにする
039set ocidFormat to (refMe's NSPropertyListBinaryFormat_v1_0)
040set ocidPlistSerial to (refMe's NSPropertyListSerialization)
041set ocidOption to (refMe's NSPropertyListMutableContainersAndLeaves)
042set listResponse to ocidPlistSerial's propertyListWithData:(ocidReadData) options:(ocidOption) format:(ocidFormat) |error| :(reference)
043if (item 2 of listResponse) = (missing value) then
044  log "propertyListWithData 正常処理"
045  set ocidPlistDict to (item 1 of listResponse)
046else if (item 2 of listResponse) ≠ (missing value) then
047  log (item 2 of listResponse)'s code() as text
048  log (item 2 of listResponse)'s localizedDescription() as text
049  return "propertyListWithData エラーしました"
050end if
051#AllKey取得
052set ocidAllKeysArray to ocidPlistDict's allKeys()
053#出力用のテキスト
054set ocidOutPutString to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
055(ocidOutPutString's appendString:("\n"))
056#キーの数だけ繰り返し
057repeat with itemKeys in ocidAllKeysArray
058  #キー名で値を取り出して
059  set ocidRootObject to (ocidPlistDict's objectForKey:(itemKeys))
060  #クラスを調べて
061  set strClassName to (ocidRootObject's className()) as text
062  ##Arrayの場合は処理する
063  if strClassName contains "Array" then
064    ##Arrayの数を数えて
065    set numCntArray to ocidRootObject's |count|() as integer
066    ##Arrayの数だけ繰り返し
067    repeat with itemNo from 0 to (numCntArray - 1) by 1
068      ##Arrayの値を順番に取り出して
069      set ocidObjectItem to (ocidRootObject's objectAtIndex:(itemNo))
070      set strClassName to (ocidObjectItem's className()) as text
071      ##Arrayの場合は処理する
072      if strClassName contains "Data" then
073        set ocidPropertiesArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:(0))
074        (ocidPropertiesArray's addObject:(refMe's NSURLNameKey))
075        (ocidPropertiesArray's addObject:(refMe's NSURLPathKey))
076        set ocidResourceValue to (refMe's NSURL's resourceValuesForKeys:(ocidPropertiesArray) fromBookmarkData:(ocidObjectItem))
077        #ファイル名を格納します
078        set ocidFileName to (ocidResourceValue's objectForKey:(refMe's NSURLNameKey))
079        log ocidFileName as text
080        #ファイルパス
081        set ocidFilePathStr to (ocidResourceValue's objectForKey:(refMe's NSURLPathKey))
082        log ocidFilePathStr as text
083        #ファイルURL
084        #DATA=ブックマークをNSURLにして
085        set listResponse to (refMe's NSURL's URLByResolvingBookmarkData:(ocidObjectItem) options:(refMe's NSURLBookmarkResolutionWithoutUI) relativeToURL:(missing value) bookmarkDataIsStale:(false) |error| :(reference))
086        if (item 2 of listResponse) = (missing value) then
087          log "正常処理"
088          set ocidBookMarkFilePathURL to (item 1 of listResponse)
089          set ocidFilePathURL to ocidBookMarkFilePathURL's absoluteString()
090          log ocidFilePathURL as text
091          (ocidOutPutString's appendString:(ocidFilePathURL))
092          (ocidOutPutString's appendString:("\n"))
093          #値を格納する
094        else if (item 2 of listResponse) ≠ (missing value) then
095          log (item 2 of listResponse)'s code() as text
096          log (item 2 of listResponse)'s localizedDescription() as text
097        end if
098      end if
099    end repeat
100    
101  end if
102end repeat
103
104
105return ocidOutPutString as text
AppleScriptで生成しました

|

[ダンプのみ] BackgroundItems-v9.btmのダンプ(dumpBTM使用)

ダウンロード - dumpbtm.zip


あくまでも参考にしてください

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

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#ユーザードメインの
004# DumpBTMを利用してバックグラウンド項目をダンプする
005# https://github.com/objective-see/DumpBTM/tree/main
006# 使用したログ等は
007# 全ユーザー共通なのでプライバシーには配慮すること
008#com.cocolog-nifty.quicktimer.icefloe
009----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
010use AppleScript version "2.8"
011use framework "Foundation"
012use framework "AppKit"
013use scripting additions
014property refMe : a reference to current application
015
016####入力ファイルパス
017set strFilePath to ("/private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v9.btm") as text
018###BINパス
019tell application "Finder"
020  set aliasPathToMe to (path to me) as alias
021  set aliasContainerDirPath to (container of aliasPathToMe) as alias
022  set aliasBinPath to (file "dumpBTM" of folder "bin" of folder aliasContainerDirPath) as alias
023end tell
024set strBinPath to (POSIX path of aliasBinPath) as text
025#####
026#保存用テキスト
027set ocidSaveString to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
028#コマンド整形
029set strCommandText to ("\"" & strBinPath & "\" \"" & strFilePath & "\"") as text
030try
031  #コマンド実行
032  set strResponse to (do shell script strCommandText) as text
033on error
034  return "エラーしました"
035end try
036#保存用のテキストに格納
037(ocidSaveString's appendString:(strResponse))
038
039
040##保存 書類フォルダ
041set appFileManager to refMe's NSFileManager's defaultManager()
042set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDocumentDirectory) inDomains:(refMe's NSUserDomainMask))
043set ocidDocumentDirPathURL to ocidURLsArray's firstObject()
044set ocidSaveDirPathURL to ocidDocumentDirPathURL's URLByAppendingPathComponent:("Apple/BackgroundItems") isDirectory:(true)
045#保存先ディレクトリ
046set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
047ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
048set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
049if (item 1 of listDone) is true then
050  log "保存先ディレクトリ作成 正常処理"
051else if (item 2 of listDone) ≠ (missing value) then
052  log (item 2 of listDone)'s code() as text
053  log (item 2 of listDone)'s localizedDescription() as text
054  return "エラーしました"
055end if
056
057#ファイル名は日付
058set strDateNO to doGetDateNo("yyyy-MM-dd") as text
059set strFileName to ("BackgroundItems-v9.btm." & strDateNO & ".log")
060set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName) isDirectory:(false)
061#保存
062set listDone to ocidSaveString's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
063if (item 1 of listDone) is true then
064  log "保存先ディレクトリ作成 正常処理"
065else if (item 2 of listDone) ≠ (missing value) then
066  log (item 2 of listDone)'s code() as text
067  log (item 2 of listDone)'s localizedDescription() as text
068  return "エラーしました"
069end if
070
071#保存先を開く
072set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
073set boolDone to appSharedWorkspace's openURL:(ocidSaveDirPathURL)
074if (item 1 of listDone) is true then
075  log "正常処理"
076else if (item 2 of listDone) ≠ (missing value) then
077  log (item 2 of listDone)'s code() as text
078  log (item 2 of listDone)'s localizedDescription() as text
079  return "エラーしました"
080end if
081
082
083
084##############################
085### 今の日付日間 テキスト
086##############################
087to doGetDateNo(argDateFormat)
088  ####日付情報の取得
089  set ocidDate to current application's NSDate's |date|()
090  ###日付のフォーマットを定義
091  set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
092  ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
093  set ocidTimeZone to refMe's NSTimeZone's alloc()'s initWithName:"Asia/Tokyo"
094  ocidNSDateFormatter's setTimeZone:(ocidTimeZone)
095  ocidNSDateFormatter's setDateFormat:(argDateFormat)
096  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
097  set strDateAndTime to ocidDateAndTime as text
098  return strDateAndTime
099end doGetDateNo
AppleScriptで生成しました

|

[ログイン項目] ユーザードメインのbackgrounditems.btmのブックマークをダンプする


あくまでも参考にしてください

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

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#ユーザードメインの
004# backgrounditems.btmのブックマークデータを表示します
005#unarchivedObjectOfClassesが失敗するので
006#できるようになるまでの仮
007#com.cocolog-nifty.quicktimer.icefloe
008----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
009use AppleScript version "2.8"
010use framework "Foundation"
011use framework "AppKit"
012use scripting additions
013property refMe : a reference to current application
014
015####入力ファイルパス
016set appFileManager to refMe's NSFileManager's defaultManager()
017set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSApplicationSupportDirectory) inDomains:(refMe's NSUserDomainMask))
018set ocidApplicatioocidupportDirPathURL to ocidURLsArray's firstObject()
019set ocidFilePathURL to ocidApplicatioocidupportDirPathURL's URLByAppendingPathComponent:("com.apple.backgroundtaskmanagementagent/backgrounditems.btm") isDirectory:(false)
020(*
021set strFilePath to ("~/Library/Application Support/com.apple.backgroundtaskmanagementagent/backgrounditems.btm") as text
022set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
023set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
024set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
025*)
026# NSDataに読み込んで
027set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidFilePathURL) options:(refMe's NSDataReadingMappedIfSafe) |error| :(reference)
028if (item 2 of listResponse) = (missing value) then
029  log "正常処理"
030  set ocidReadData to (item 1 of listResponse)
031else if (item 2 of listResponse) ≠ (missing value) then
032  log (item 2 of listResponse)'s code() as text
033  log (item 2 of listResponse)'s localizedDescription() as text
034  return "エラーしました"
035end if
036
037# unarchivedObjectOfClassで解凍する
038#DATAを解凍する
039set ocidClassListArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:(0))
040(ocidClassListArray's addObject:(refMe's NSDictionary's class))
041(ocidClassListArray's addObject:(refMe's NSMutableDictionary's class))
042(ocidClassListArray's addObject:(refMe's NSArray's class))
043(ocidClassListArray's addObject:(refMe's NSMutableArray's class))
044(ocidClassListArray's addObject:(refMe's NSObject's classForKeyedUnarchiver))
045(ocidClassListArray's addObject:(refMe's NSObject's class))
046(ocidClassListArray's addObject:(refMe's NSKeyedArchiver's class))
047(ocidClassListArray's addObject:(refMe's NSKeyedUnarchiver's class))
048#クラスセット
049set ocidSetClass to refMe's NSSet's alloc()'s initWithArray:(ocidClassListArray)
050#解凍
051set listResponse to refMe's NSKeyedUnarchiver's unarchivedObjectOfClasses:(ocidSetClass) fromData:(ocidReadData) |error| :(reference)
052set ocidPlistDict to (item 1 of listResponse)
053if ocidPlistDict = (missing value) then
054  log "解凍に失敗しましたので解凍しないでブックマーク一覧を取得します"
055  set ocidFormat to refMe's NSPropertyListBinaryFormat_v1_0
056  set ocidOption to refMe's NSPropertyListMutableContainersAndLeaves
057  set listResponse to refMe's NSPropertyListSerialization's propertyListWithData:(ocidReadData) options:(ocidOption) format:(ocidFormat) |error| :(reference)
058  if (item 2 of listResponse) = (missing value) then
059    log "正常処理"
060    set ocidReadDict to (item 1 of listResponse)
061  else if (item 2 of listResponse) ≠ (missing value) then
062    log (item 2 of listResponse)'s code() as text
063    log (item 2 of listResponse)'s localizedDescription() as text
064    return "エラーしました"
065  end if
066  #必要なデータを格納するArray
067  set ocidBookMarkArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
068  #ROOTから取得
069  set ocidObjectArray to ocidReadDict's objectForKey:("$objects")
070  #リストの数を数えて
071  set numCntArray to ocidObjectArray's |count|() as integer
072  #ocidObjectArrayの数だけ繰り返し
073  repeat with itemNo from 0 to (numCntArray - 1) by 1
074    
075    #Arrayから取り出して
076    set ocidItemData to (ocidObjectArray's objectAtIndex:(itemNo))
077    #クラスを調べて
078    set strClassName to ocidItemData's className() as text
079    #DATAなら処理する
080    if strClassName contains "NSCFData" then
081      #NSURL情報を格納するARRAY
082      set ocidItemURLArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:(0))
083      #格納用のARRAY
084      set ocidKeyArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:(0))
085      #パスと名前を取得して
086      (ocidKeyArray's addObject:(refMe's NSURLPathKey))
087      (ocidKeyArray's addObject:(refMe's NSURLNameKey))
088      set ocidResourceValues to (refMe's NSURL's resourceValuesForKeys:(ocidKeyArray) fromBookmarkData:(ocidItemData))
089      #ファイル名を格納します
090      set ocidFileName to (ocidResourceValues's objectForKey:(refMe's NSURLNameKey))
091      (ocidItemURLArray's addObject:(ocidFileName))
092      #DATA=ブックマークをNSURLにして
093      set listResponse to (refMe's NSURL's URLByResolvingBookmarkData:(ocidItemData) options:(refMe's NSURLBookmarkResolutionWithoutUI) relativeToURL:(missing value) bookmarkDataIsStale:(false) |error| :(reference))
094      if (item 2 of listResponse) = (missing value) then
095        log "正常処理"
096        set ocidBookMarkFilePathURL to (item 1 of listResponse)
097        #値を格納する
098        (ocidItemURLArray's addObject:(ocidBookMarkFilePathURL))
099      else if (item 2 of listResponse) ≠ (missing value) then
100        log (item 2 of listResponse)'s code() as text
101        log (item 2 of listResponse)'s localizedDescription() as text
102        return "エラーしました"
103      end if
104      #値の格納
105      (ocidBookMarkArray's addObject:(ocidItemURLArray))
106    end if
107    
108  end repeat
109else
110  return "解凍出来ちゃいましたいつか解凍方法がわかったらやろう"
111end if
112
113
114
115##出力用タブ区切りテキストにする
116set ocidOutPutstring to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
117#項番用3桁ゼロパディング
118set numNo to 1 as integer
119set ocidFormatter to refMe's NSNumberFormatter's alloc()'s init()
120ocidFormatter's setMinimumIntegerDigits:(3)
121ocidFormatter's setMaximumIntegerDigits:(3)
122
123repeat with itemArray in ocidBookMarkArray
124  log itemArray as list
125  set strDec3 to (ocidFormatter's stringFromNumber:(numNo)) as text
126  set strFileName to (item 1 of itemArray) as text
127  set strFilePath to (item 2 of itemArray)'s |path|() as text
128  set strFilePathURL to (item 2 of itemArray)'s absoluteString() as text
129  #
130  (ocidOutPutstring's appendString:(strDec3))
131  (ocidOutPutstring's appendString:("\t"))
132  (ocidOutPutstring's appendString:(strFileName))
133  (ocidOutPutstring's appendString:("\t"))
134  (ocidOutPutstring's appendString:(strFilePath))
135  (ocidOutPutstring's appendString:("\t"))
136  (ocidOutPutstring's appendString:(strFilePathURL))
137  (ocidOutPutstring's appendString:("\n"))
138  #カウントアップ
139  set numNo to (numNo + 1) as integer
140end repeat
141
142##保存 書類フォルダ
143set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDocumentDirectory) inDomains:(refMe's NSUserDomainMask))
144set ocidDocumentDirPathURL to ocidURLsArray's firstObject()
145set ocidSaveDirPathURL to ocidDocumentDirPathURL's URLByAppendingPathComponent:("Apple/LoginItem") isDirectory:(true)
146#保存先ディレクトリ
147set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
148ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
149set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
150if (item 1 of listDone) is true then
151  log "保存先ディレクトリ作成 正常処理"
152else if (item 2 of listDone) ≠ (missing value) then
153  log (item 2 of listDone)'s code() as text
154  log (item 2 of listDone)'s localizedDescription() as text
155  return "エラーしました"
156end if
157#ファイル名は日付
158set strDateNO to doGetDateNo("yyyy-MM-dd") as text
159set strFileName to ("dump_ backgrounditems.btm." & strDateNO & ".tsv")
160set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName) isDirectory:(false)
161#保存
162set listDone to ocidOutPutstring's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
163if (item 1 of listDone) is true then
164  log "保存先ディレクトリ作成 正常処理"
165else if (item 2 of listDone) ≠ (missing value) then
166  log (item 2 of listDone)'s code() as text
167  log (item 2 of listDone)'s localizedDescription() as text
168  return "エラーしました"
169end if
170
171
172##
173#保存先を開く
174set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
175set boolDone to appSharedWorkspace's openURL:(ocidSaveDirPathURL)
176if (item 1 of listDone) is true then
177  log "正常処理"
178else if (item 2 of listDone) ≠ (missing value) then
179  log (item 2 of listDone)'s code() as text
180  log (item 2 of listDone)'s localizedDescription() as text
181  return "エラーしました"
182end if
183
184
185##ダイアログを出す
186tell current application
187  set strName to name as text
188end tell
189if strName is "osascript" then
190  tell application "Finder"
191    activate
192  end tell
193else
194  tell current application
195    activate
196  end tell
197end if
198set strMes to ("backgrounditems.btmの\n登録項目のダンプ\nタブ区切りテキストですので\n Excelやnumbersにペーストしてください") as text
199set aliasIconPath to (POSIX file "/System/Library/PrivateFrameworks/AMPSharing.framework/Versions/A/PlugIns/SharingPrefsExtension.appex/Contents/Resources/AppIcon.icns") as alias
200try
201  set recordResult to (display dialog strMes with title "戻り値です" default answer (ocidOutPutstring as text) buttons {"クリップボードにコピー", "終了", "再実行"} default button "クリップボードにコピー" cancel button "終了" giving up after 20 with icon aliasIconPath without hidden answer) as record
202on error
203  return "エラーしました"
204end try
205if (gave up of recordResult) is true then
206  return "時間切れです"
207end if
208##############################
209#####自分自身を再実行
210##############################
211if button returned of recordResult is "再実行" then
212  tell application "Finder"
213    set aliasPathToMe to (path to me) as alias
214  end tell
215  run script aliasPathToMe with parameters "再実行"
216end if
217##############################
218#####値のコピー
219##############################
220if button returned of recordResult is "クリップボードにコピー" then
221  try
222    set strText to text returned of recordResult as text
223    ####ペーストボード宣言
224    set appPasteboard to refMe's NSPasteboard's generalPasteboard()
225    set ocidText to (refMe's NSString's stringWithString:(strText))
226    appPasteboard's clearContents()
227    appPasteboard's setString:(ocidText) forType:(refMe's NSPasteboardTypeString)
228  on error
229    tell application "Finder"
230      set the clipboard to strText as text
231    end tell
232  end try
233end if
234
235
236
237return 0
238
239
240
241
242
243##############################
244### 今の日付日間 テキスト
245##############################
246to doGetDateNo(argDateFormat)
247  ####日付情報の取得
248  set ocidDate to current application's NSDate's |date|()
249  ###日付のフォーマットを定義
250  set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
251  ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
252  set ocidTimeZone to refMe's NSTimeZone's alloc()'s initWithName:"Asia/Tokyo"
253  ocidNSDateFormatter's setTimeZone:(ocidTimeZone)
254  ocidNSDateFormatter's setDateFormat:(argDateFormat)
255  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
256  set strDateAndTime to ocidDateAndTime as text
257  return strDateAndTime
258end doGetDateNo
AppleScriptで生成しました

|

[System Events]ログイン時に起動する項目の設定


あくまでも参考にしてください

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

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002#
003#Bashからの呼び出し用
004tell application "System Events"
005  set listResponse to every login item as list
006end tell
007
008return listResponse
AppleScriptで生成しました

あくまでも参考にしてください

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

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# 起動項目の各種情報
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.6"
007use scripting additions
008tell application "System Events"
009  ##全てのログイン項目をリストにする
010  set listResponse to every login item as list
011  ##リストの数だけ繰り返し
012  repeat with itemLoginItem in listResponse
013    ##そのログインアイテムの
014    tell itemLoginItem
015      ##名前
016      set strItemName to name as text
017      ##パス
018      set strFilePath to path as text
019      ##種類
020      set strKind to kind as text
021      ##隠すか?
022      set boolHidden to hidden as boolean
023    end tell
024    
025  end repeat
026end tell
027
AppleScriptで生成しました

あくまでも参考にしてください

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

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# 起動項目削除
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.6"
007use scripting additions
008tell application "System Events"
009  ##全てのログイン項目をリストにする
010  set listResponse to every login item as list
011  ##リストの数だけ繰り返し
012  repeat with itemLoginItem in listResponse
013    ##ログイン項目の名前を取得して
014    set strItemName to name of itemLoginItem as text
015    ###Acrobatのログイン項目だったら
016    if strItemName contains "Acrobat" then
017      ##そのログインアイテムは
018      tell itemLoginItem
019        ##削除する
020        delete
021      end tell
022    end if
023  end repeat
024end tell
025
AppleScriptで生成しました

あくまでも参考にしてください

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

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env bash
002#
003#Bashからの呼び出し用
004/usr/bin/osascript -e 'tell application "System Events" to name of every login item as list'
005
006exit 0
AppleScriptで生成しました

|

[System Events]起動項目を追加する

ダウンロード - 20240501_080313.html


あくまでも参考にしてください

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

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# 起動項目追加
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.6"
007use scripting additions
008
009#############################
010#ダイアログを前面に出す
011set strName to (name of current application) as text
012if strName is "osascript" then
013  tell application "Finder" to activate
014else
015  tell current application to activate
016end if
017tell application "Finder"
018  set aliasApplicationDirPath to (path to applications folder from local domain) as alias
019end tell
020set strMes to ("アプリケーションを選んでください") as text
021set strPrompt to ("アプリケーションを選んでください") as text
022set listUTI to {"com.apple.application-bundle"} as list
023try
024  set aliasAppFilePath to (choose file strMes with prompt strPrompt default location (aliasApplicationDirPath) of type listUTI with invisibles without multiple selections allowed and showing package contents) as alias
025on error
026  log "エラーしました"
027  return "エラーしました"
028end try
029#############################
030#アプリケーション名の取得
031tell application "Finder"
032  tell file aliasAppFilePath
033    set strAppName to name as text
034  end tell
035end tell
036tell application strAppName
037  set strName to name as text
038end tell
039#UNIXパス
040set strAppFilePath to (POSIX path of aliasAppFilePath) as text
041#起動項目追加
042tell application "System Events"
043  try
044    make login item at end with properties {name:strName, path:strAppFilePath, class:login item, kind:"アプリケーション", hidden:false}
045  on error
046    return "エラー終了しました"
047  end try
048end tell
049
AppleScriptで生成しました

|

[loginitem]ログイン項目 更新

ログイン項目にアプリケーションを登録するのを
私は、していないし、
知り合い等には、しないように勧めています。
ビジネスユーザーはアレですが
デザイナー環境の、起動項目は

FontBook.appと
Creative Cloud.appだけ登録しています。

フォント環境もずいぶん改善されましたので
macOS10.9の頃程ではないですが
まず、フォント環境が同期されて、
フォントがアクティブになってから
アプリケーションを起動させると
フォントのトラブルの2割は減りますよ。(個人の体感値です)

ペンタブ使っている人はなおさらです
ペンタブがアクティブになる前に
アプリケーション起動するとトラブルの元です
WacomTabletDriver.appやTabletDriver.appを起動項目で
起動させると、トラブルが回避できる『こと』もある

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



[ログイン項目] ユーザードメインのbackgrounditems.btmのブックマークをダンプする
https://quicktimer.cocolog-nifty.com/icefloe/2024/05/post-9d7637.html

|

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

|

その他のカテゴリー

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