Eigene Systemkonfiguration

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Kai Weigelt.

    Eigene Systemkonfiguration

    Guten Tag

    Ihr kennt ja bestimmt die Windows Systemkonfiguration(msconfig):


    Jetzt wollte ich mal fragen ob es überhaupt möglich ist mit Visual Basic .NET so tief ins System einzugreifen.
    Wenn ja, dann wie?

    Vielen Dank im Voraus

    Glubschi43
    Ist es sinnvoll, mit VB so tief in das System einzugreifen?
    Wie oft greifst Du bei Deinem Rechner tief in das System ein?
    Auf wie vielen Rechnern gedenkst Du, tief in das System einzugreifen?
    Also:
    Mach es auf die vom Systemhersteller angebotene Art und Weise.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Möglich ja. Das Zeug wird halt irgendwo in den tiefen der Registry liegen.
    Dazu müsste man halt wissen was genau du nun verändern willst.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

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

    Eigentlich macht die Windows Systemkonfiguration (msconfig) ja nichts anderes, als
    1. Den Bootmanager verändern
    2. Registry-Einträge lesen/ändern
    3. Programme starten (Tools-Reiter)

    Den Bootmanager bearbeitest du über den Startkonfigurationsdaten-Editor (bcdedit.exe), welchen du über einen Windows-Befehlsprozessor (cmd.exe) aufrufst (alternativ kannst du die bcdedit.exe mit den entsprechenden Parametern auch direkt aufrufen).
    Im Manifest deines Programms gibst du an, dass dein Programm zum Starten Admin-Rechte benötigt, dann kannst du über

    VB.NET-Quellcode

    1. Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.SystemX86) & "\cmd.exe", "/q /d /s /c ""bcdedit /?""")

    den Bootmanager verändern (natürlich ersetzt du den /?-Schalter durch die Optionen, die du gerade brauchst; /? listet dir alle Optionen auf).

    Hiermit hättest du schonmal den 'Allgemein'- und den 'Start'-Reiter von msconfig abgedeckt.

    Bei den Diensten hilft es dir vielleicht, hier nachzulesen, damit kannst du schon viel anstellen.

    Bei dem Reiter 'Systemstart' werden dir gleich die Einträge aus mehreren Quellen angezeigt:
    Aus der Registry (sofern in den entspechenden Schlüsseln Einträge enthalten sind):
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
    • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

    Und aus dem Dateisystem: der 'Autostart'-Ordner aus dem Startmenü.
    Den Pfad zu diesem Ordner bekommst du mit

    VB.NET-Quellcode

    1. Environment.GetFolderPath(Environment.SpecialFolder.Startup)
    2. Environment.GetFolderPath(Environment.SpecialFolder.CommonStartup)

    heraus.

    Der Tools-Reiter macht eigentlich nichts anderes, als bestimmte Dateien aus dem Ordner "%WINDIR%\System32" aufzulisten und auszuführen, auch hier kannst du einfach die Process.Start()-Funktion verwenden.

    Damit kannst du dir eine 'msconfig' eigentlich selbst schreiben ^^ ; über den Sinn des Ganzen lässt sich natürlich streiten ;)

    ―Kai

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

    Wie du meinst, dann vermeide ich zukünftig Shell() :D
    Ich werde den Beitrag oben editieren, damit das veraltete Shell() nichtmehr drinn vorkommt ;)

    Edit: Hab gerade diesen Thread gefunden; ist interessant für alle, die sonst Shell() anstatt Process.Start() verwenden würden ;)

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