Eigenes Programmverzeichnis löschen

  • VB.NET

    Eigenes Programmverzeichnis löschen

    Moin,

    Es tönt einfach aber ich schaff es einfach nicht... Alles gegoogelt. Ich programmiere ein eigenes Deinstallationsprogramm. Die EXE löscht sich selbst mit folgendem Code, also über die Windows-Programmkonsole welche dann zeitlich verzögert abläuft (nachdem das Programm bereits geschlossen wurde):

    Quellcode

    1. Dim loeschen As String = "cmd.exe /C choice /C Y /N /D Y /T 3 & Del " & Application.ExecutablePath
    2. Shell(loeschen, AppWinStyle.Hide)
    3. END



    Dies hingegen funktioniert mit dem eigenen Ordner nicht: (es löscht den Inhalt des Ordners aber den Ordner selbst nicht)

    Quellcode

    1. 'Dim loeschen2 As String = "cmd.exe /C choice /C Y /N /D Y /T 3 & rmdir /S /Q " & IO.Directory.GetParent(Application.ExecutablePath).ToString
    2. 'Shell(loeschen2, AppWinStyle.Hide)


    Es scheint, dass es trotz der Schliessung/Beendigung des Programms immer noch einen Hintergrundprozess offen hat, welches den Zugriff verhindert. Dasselbe gilt übrigens auch für Verknüpfungen, wenn die EXE über das Startmenü aufgerufen wird, kann man zwar alle Startmenüeinträge löschen, den leeren Ordner, über den die Verknüpfung aufgerufen wurde, jedoch nicht.

    Ich habe auch versucht, eine Batch Datei anstelle des CMD commands zu erstellen und dann aufzurufen. Sogar das Aufrufen einer solchen Batch-Datei und dann ein Aufrufen wieder einer Batch-Datei von der ersten Batch Datei aus hat nicht geholfen! Es geht natürlich, wenn die EXE geschlossen ist und die Batch Datei separat geöffnet wird (nicht über den Programmcode). Hat jemand einen Vorschlag, wie das Programmverzeichnis gelöscht werden könnte ohne dass man eine zweite EXE Datei hat, welche sich an einem anderen Ort befindet?. Gibt es vielleicht einen speziellen END Befehl, welcher alle Ressourcen löscht und so der Zugriff auf das Verzeichnis selbst ermöglicht?

    *Thema geschlossen da gut gemeinte Antworten für illegale verschleierung von Schadsoftware verwendet werden könnte* ~NoFear23m

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()