Meine erste Konsolenanwendung

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von Fortender.

    Meine erste Konsolenanwendung

    Guten Tag. Ich habe einfach vor einen befehl an CMD zu senden... mein code sieht so aus, und am ende soll es sich von alleine beenden, das tut er aber nicht.
    Wo liegt der fehler?

    VB.NET-Quellcode

    1. ​Module Module1
    2. Sub Main()
    3. Dim CmdContent As String = Nothing
    4. Using ConsoleProcess As New Process
    5. ConsoleProcess.StartInfo.CreateNoWindow = True
    6. ConsoleProcess.StartInfo.FileName = "cmd.exe"
    7. ConsoleProcess.StartInfo.RedirectStandardOutput = True
    8. ConsoleProcess.StartInfo.RedirectStandardInput = True
    9. Console.WriteLine("VAC-Fixer by LuX")
    10. ConsoleProcess.StartInfo.UseShellExecute = False
    11. ConsoleProcess.Start()
    12. ConsoleProcess.StandardInput.WriteLine("bcdedit.exe /deletevalue nx")
    13. Console.WriteLine("finished: please reboot your PC... thx for using this tool :-)")
    14. ConsoleProcess.WaitForExit()
    15. CmdContent = ConsoleProcess.StandardOutput.ReadToEnd()
    16. End Using
    17. End Sub
    18. End Module

    TheVBNoob schrieb:

    ConsoleProcess.StandardInput.WriteLine("bcdedit.exe /deletevalue nx")
    Willst du dieses Programm ausführen? Wenn ja, nutze doch einfach die Process-Klasse. Was du machst, ist, dass du den Befehl einfach in die Konsole schreibst. Fertig. Das führt den aber nicht aus. Einfach über die Process-Klasse starten.

    LG :)

    ~ides
    also müsste es ja jetzt laufen:



    Sub Main()
    Dim proc As New Process
    Dim CmdContent As String = Nothing
    Using ConsoleProcess As New Process

    ConsoleProcess.StartInfo.CreateNoWindow = True

    ConsoleProcess.StartInfo.FileName = "cmd.exe"

    ConsoleProcess.StartInfo.RedirectStandardOutput = True
    ConsoleProcess.StartInfo.RedirectStandardInput = True
    Console.WriteLine("VAC-Fixer by LuX")


    ConsoleProcess.StartInfo.UseShellExecute = False

    ConsoleProcess.Start()

    proc.StartInfo.FileName = "bcedit.exe"
    proc.StartInfo.Arguments = "/deletevalue nx"

    Console.WriteLine("finished: please reboot your PC... thx for using this tool :-)")

    'ConsoleProcess.WaitForExit()

    CmdContent = ConsoleProcess.StandardOutput.ReadToEnd()
    End Using

    End Sub

    End Module


    nur sehe ich nicht, obs geklappt hat.
    Nachtrag zur vorherigen Schließung;

    Per PN wurde geklärt, dass es sich nicht um Software zum Umgehen des VAC-Systems handelt, sondern dieses Problem behebt: forums.steampowered.com/forums/showthread.php?t=3240945
    Ich habe den Thread entsprechend wieder geöffnet.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    ErfinderDesRades schrieb:

    ich browse nicht gerne auf so komischen Sites herum, wo fast alles schwarz ist...

    Keine Sorge, die Seite ist ungefährlich ^^
    Hier nochmal von der Seite kopiert:

    Enable DEP

    Data Execution Prevention (DEP) must be enabled to play on VAC secured
    servers. To restore DEP settings to default please follow the steps
    below:

    Exit Steam.
    Click the Start button, then 'All Programs', and 'Accessories'
    Right-click on Command Prompt and click "Run as administrator..."

    - Please note if you are running Windows 8 you will need to press Windows Key + X and select Command Prompt (Admin)
    In the command prompt, type the following command and press Enter:

    bcdedit.exe /deletevalue nx
    Restart your computer.
    Launch Steam and test the issue again.

    Und hier wird erklärt was DEP ist: windows.microsoft.com/de-de/wi…requently-asked-questions
    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯
    @ErfinderDesRadesnull
    Data Execution Prevention (DEP) must be enabled to play on VAC secured servers. To restore DEP settings to default please follow the steps
    [...]
    In the command prompt, type the following command and press Enter:
    bcdedit.exe /deletevalue nx


    Edit: Zu langsam :/

    MfG Tim
    ah - "Data Execution Prevention (DEP) must be enabled to play on VAC secured servers."

    gut zu wissen - was immer das auch bedeuten mag ;) , und was das mit diesem Thread zu tun hat...

    Aber ihr brauchts mir auch nicht zu erklären - vermutlich ein Themenbereich, zu dem ich eh nix beitragen kann.
    @ErfinderDesRades
    Es geht hier um Gaming bzw. präziser ausgedrückt, um die Prävention des Cheatens. Der VAC (Valve Anti Cheat) sorgt dafür (bzw. versucht dafür zu sorgen), dass in den Spielen nicht gecheatet wird.
    Er versucht Fremdprogramme zu detecten, die aus dem Speicher heraus ausgeführt werden (z.b. per Injection) und Speicherbereiche des Spiels
    manipulieren wollen. In der Regel funktionieren diese Hacks/Cheats nämlich so, dass sie sich in den Gameprocess injizieren und somit Fremdcode ins
    Spiel einschleusen um zu schummeln.

    DEP ist scheinbar dafür essenziell, da dieser
    [...] vor Schäden durch Viren und andere Sicherheitsrisiken schützt. Hierbei werden Programme überwacht, um die sichere Verwendung des Systemspeichers durch die betreffenden Programme sicherzustellen. Wenn ein Programm versucht, Code aus dem Speicher auf unzulässige Weise auszuführen, wird das Programm durch die Datenausführungsverhinderung geschlossen.
    - Microsoft

    Es kann aber wie im Steamthread beschrieben, sein, dass DEP ungewollt ausgeschalten wurde. Da die Spiele aber sobald sie VAC nutzen auch von DEP abhängig sind, muss vor dem Spielen auf öffentlichen Servern auch
    sichergestellt werden, dass DEP aktiviert ist. Wenn das nicht der Fall ist, kann dies mit der vom TE (bzw. im Steamthread) gezeigten Methode manuell aktiviert werden.

    MfG Tim

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Fortender“ ()

    Nicht wahr: Es ist prinzipiell tatsächlich möglich, ein Problem verständlich darzustellen :thumbsup:
    (eiglich wäre das ja Aufgabe des TEs gewesen, aber egal)

    Nur hierauf stellt sich eine Frage:

    Fortender schrieb:

    ... kann dies mit der vom TE (bzw. im Steamthread) gezeigten Methode manuell aktiviert werden.
    Ja, aber die Methode scheint ja nicht zu gehen, sonst hätte er ja keinen Thread eröffnet.


    Aber vlt. kann ich nu doch was beitragen:

    TheVBNoob schrieb:

    VB.NET-Quellcode

    1. CmdContent = ConsoleProcess.StandardOutput.ReadToEnd()
    Sowas funzt nicht, denn ein .StandardOutput-Stream ist unendlich, sodass sich .ReadToEnd() aufhängt.

    ErfinderDesRades schrieb:

    Ja, aber die Methode scheint ja nicht zu gehen, sonst hätte er ja keinen Thread eröffnet.

    Das Grundprinzip, nämlich der Aufruf von "bcdedit.exe /deletevalue nx" ist aber völlig korrekt, das meinte ich damit.

    Nur ist ein Konsolenprogramm hier realistisch gesehen völlig fehl am Platz. Das dient scheinbar nur zur Übung.
    Für sowas würde ich sowieso ne Batch-Datei nehmen. Da brauchste nicht in irgendnen Stream schreiben über die Process-Klasse,
    sondern kannste direkt per echo deine Nachricht an den User ausgeben und auch das Aufrufen des Files incl. Parameter ist per Batch ein
    Einzeiler.

    MfG Tim