2016-09-06 3 views
1

Ich habe ein Deinstallationsprogramm für meinen Treiber erstellt, das seine passende PLIST-Datei von /Library/LaunchDaemons entfernt, so dass es beim nächsten Boot-Zyklus nicht erneut geladen wird. Es scheint jedoch keine Auswirkungen auf meinen Treiber zu haben, der nach dem Booten des Rechners normal geladen wird.Kextcache nach dem Entfernen des Treibers aufheben launchd plist file

Nach einigen Untersuchungen in dieser Angelegenheit habe ich herausgefunden, dass die kextcache der Grund für dieses Verhalten ist, und um es zu reinigen/ungültig machen, muss ich touch den Ordner, wo die Installation Zielvolumen. Es hatte jedoch keine Wirkung.

Meine Frage ist, wie Sie den Kext-Cache richtig ungültig machen, so dass Launchd den Kext nicht laden wird, nachdem die entsprechende PLIST-Datei entfernt wurde.

Dank der Antwort unten habe ich Kext Cache ungültig gemacht. Allerdings hätte ich gerne die Entsprechung für den Zugriff auf den vorhandenen Ordner in objective-c, auf dem mein Deinstallationsprogramm basiert.

Um genau zu sein, hier ist der Code Ich möchte Objective-C konvertieren:

sudo touch /System/Library/Extensions; sudo touch /Library/Extensions

Antwort

2

Der richtige Weg, um die kext Caches ungültig zu machen ist

sudo touch /System/Library/Extensions 

oder in OS Versionen, die das Laden von Erweiterungen von/Library unterstützen:

Sobald Sie dies tun, werden die Kext-Caches automatisch neu generiert.

+0

Es scheint zu funktionieren, wenn ich es manuell eingeben, aber wenn ich es von AppleScript über Ziel-C-Deinstallation helper ich habe nichts getan. vielleicht kannst du mir sagen, was mit meinem Code nicht stimmt 'NSString * script = [NSString stringWithFormat: @" shell script "" touch/Library/Extensions /; berühre/System/Library/Extensions/\ "mit Administratorrechten"]; NSAppleScript * appleScript = [[NSAppleScript neu] initWithSource: script]; '. Beachten Sie, dass ich es im privilegierten Modus ausgeführt habe – Zohar81

+0

Ich würde auch gerne hören, wenn Sie diesen Befehl von uninstallerHelper besser haben, der in objective-C geschrieben ist, aber ich könnte darüber nachdenken, es in andere Sprache zu ändern, wenn es sich lohnt Anstrengung. – Zohar81

+0

Sie müssen einen absoluten Pfad zu/usr/bin/touch verwenden, da die Umgebungsvariable PATH in dieser Umgebung bewusst leer ist, um zu verhindern, dass Helfer willkürlichen Code als Root ausführen. – dgatwood

Verwandte Themen