6 votes

Identifier pourquoi MacOS me demande un mot de passe administrateur

J'obtiens cette boîte de dialogue ennuyeuse lorsque je me connecte sur mon mac en tant qu'utilisateur standard, et je ne sais pas pourquoi il continue à demander un mot de passe administrateur.

enter image description here

Ma question est de savoir s'il existe un moyen de trouver la commande/le processus ou autre qui provoque cette boîte de dialogue. Merci d'avance

2voto

egregious Points 62

Crédit à réponse du superutilisateur pour ça.

Il existe certainement d'autres moyens d'y parvenir, mais si vous êtes habile avec Python, voici un script bien pratique qui vous montrera des détails pertinents pour les fenêtres actuellement affichées. Après l'exécution, déplacez la fenêtre en question, et le script vous donnera les spécificités (par exemple le PID) de cette fenêtre. A partir de là, vous pouvez fouiller et voir qui vous embête pour su.

#!/usr/bin/env python

import Quartz
import time
from Foundation import NSSet, NSMutableSet
def transformWindowData(data):
    list1 = []
    for v in data:
        if not v.valueForKey_('kCGWindowIsOnscreen'):
            continue

        row = (  \
            str(v.valueForKey_('kCGWindowOwnerPID') or '?').rjust(7) + \
            ' ' + str(v.valueForKey_('kCGWindowNumber') or '?').rjust(5) + \
            '  {' + ('}' if v.valueForKey_('kCGWindowBounds') is None else \
                ( \
                    str(int(v.valueForKey_('kCGWindowBounds').valueForKey_('X')))     + ',' + \
                    str(int(v.valueForKey_('kCGWindowBounds').valueForKey_('Y')))     + ',' + \
                    str(int(v.valueForKey_('kCGWindowBounds').valueForKey_('Width'))) + ',' + \
                    str(int(v.valueForKey_('kCGWindowBounds').valueForKey_('Height'))) \
                ) + '}'  \
                ).ljust(21) + \
            '\t[' + ((v.valueForKey_('kCGWindowOwnerName') or '') + ']:') + \
            ('' if v.valueForKey_('kCGWindowName') is None else (" " + v.valueForKey_('kCGWindowName') )) \
        )
        list1.append(row)

    return list1;

def printBeautifully(dataSet):
    print ('PID'.rjust(7) + ' ' + 'WinID'.rjust(5) + '  ' + 'x,y,w,h'.ljust(21) + ' ' + '\t[Title]:SubTitle')
    print ('-'.rjust(7,'-') + ' ' + '-'.rjust(5,'-') + '  ' + '-'.ljust(21,'-') + ' ' + '\t-------------------------------------------')

    # print textList1
    for v in dataSet:
        print (v);

#grab initial set
wl = Quartz.CGWindowListCopyWindowInfo( Quartz.kCGWindowListOptionAll, Quartz.kCGNullWindowID)
wl = sorted(wl, key=lambda k: k.valueForKey_('kCGWindowOwnerPID'))

#convert into readable format
textList1 = transformWindowData(wl);

#print everything we have on the screen
print ('all windows:')
printBeautifully(textList1)

print ('Move target window')
time.sleep(5)

#grab window data the second time
wl2 = Quartz.CGWindowListCopyWindowInfo(Quartz.kCGWindowListOptionAll, Quartz.kCGNullWindowID)
textList2 = transformWindowData(wl2)

#check the difference
w = NSMutableSet.setWithArray_(textList1)
w.minusSet_(NSSet.setWithArray_(textList2))

#print the difference
printBeautifully(w)

Note : Ce script est pour Python 3.x. Je me suis battu avec le script original pendant un certain temps (je ne suis pas un programmeur Python). Je n'arrivais pas à le faire fonctionner (avec 2.x) à cause d'une dépendance de Quartz nécessitant 3.x.

Voici quelques conditions préalables :

pip install pyobjc-framework-Quartz
pip install quartz

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X