Necesito verificar mediante programación si Set Date and Time automatically
está marcado o no en las Preferencias del sistema Mac.
No encontré ningún archivo .plist que contenga esta información, ¿alguien puede decirme dónde puedo encontrar esta información?
El resultado final de la casilla de verificación "Establecer fecha y hora automáticamente" es que el demonio ntpd se inicia con launchd.
Por lo tanto, podría verificar la presencia del archivo /var/run/ntpd.pid o, presumiblemente, verificar si ntpd se está ejecutando como un proceso. Todo esto está bien para el sitio, pero la segunda parte de la pregunta sobre cómo recuperar este estado mediante programación está básicamente fuera de tema aquí.
Permitimos preguntas de programación limitadas de AppleScript, Automator y shell scripting. El alcance completo de las preguntas de los desarrolladores (especialmente con las nuevas restricciones de OSX, como el sandboxing) o las preguntas y respuestas a nivel de código sobre cómo programar se hacen mejor en https://stackoverflow.com/ en lugar de aquí.
Con eso fuera del camino, aquí está la historia de fondo sobre por qué esta es una pregunta bastante complicada. Launchd es responsable de iniciar y detener el demonio de mantenimiento de tiempo de ntpd cuando activa ese interruptor y, en lugar de cargar o descargar el archivo de configuración para ese "trabajo", la herramienta tiene un archivo plist de anulación interno que tiene un estado verdadero/falso para ciertos trabajos deshabilitarse a pesar de que normalmente deberían ejecutarse. Cuando activa la casilla de verificación Preferencias del sistema en Fecha y hora, este archivo cambia el valor de la clave Deshabilitada al final del archivo para que sea o cuando la hora normal automática esté desactivada o activada (respectivamente):
Desde /private/var/db/launchd.db/com.apple.launchd/overrides.plist
<key>org.ntp.ntpd</key>
<dict>
<key>Disabled</key>
<false/>
</dict>
No conozco una forma puramente programática de obtenerlo, pero el systemsetup
comando puede hacerlo:
$ systemsetup -getusingnetworktime
Network Time: On
Encontré esta discusión en los foros de discusión de Apple. Describe cómo obtener la hora en la barra de menú, pero también cómo llegar al plist mediante programación.
/Library/Preferences/.GlobalPreferences.plist
jason salaz
Lrí
jason salaz
stu wilson
bmike