Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Little Tester
Thema: Drucker-Modell ermitteln per IP
Am im Forum: Netzwerktechnologien

Ist es irgendwie möglich mittels C# Hersteller und Modell von Druckern / Kopierern mittels IP abzufragen? Also ich will das Netzwerk scannen und mir ausgeben lassen, wie oft Hersteller und Modell vorhanden sind. Geht das überhaupt? Wie müsste man vorgehen? Einige Setup-Programme der Hersteller können das ja und listen diverse Modelle bei einer Netzwerkinstallation auf. Geht das nur mittels API der Hersteller? Da kommt man leider nicht so ohne weiteres dran, zumindest bei HP und Kyocera. Freue mich auf eure wie immer hilfreichen Antworten.

Thema: Wie einen sicheren Updater programmieren?
Am im Forum: Rund um die Programmierung

Kennt sich wer mit dem Autoupdater aus? Das Teil funktioniert, aber die Prüfung der Dateiintegrität schlägt bei mir immer fehl.

Thema: Mehrere Bildschirme ermitteln und getrennt! anzeigen und die echte Auflösung ermitteln
Am im Forum: Rund um die Programmierung

Ich frage dann nochmal zaghaft nach, ob sich wer der Thematik annehmen will. Konnte es bislang nicht lösen.

Thema: Tagsüber andere Aktionen als abends / Unterschiedliche Aktionen zu unterschiedlichen Zeiten
Am im Forum: Grundlagen von C#

Ich habe die Tage danach gesucht, wie ich bei einem Programm / Dienst eine Aktion tagsüber anders ausführen kann, als abends. Ein direktes Beispiel konnte ich nicht finden, sondern musste es mir zusammenreihmen. Heraus kam das hier und ich möchte es mit euch teilen .


var startTime = "08:00:00";
var endTime = "18:00:00";

if (DateTime.Now > DateTime.Parse(startTime) && DateTime.Now < DateTime.Parse(endTime))
{
    // Mach was zwischen 08:00 Uhr und 18:00 Uhr
} 
else 
{
    // Mach was außerhalb der oben genannten Zeit
}

Thema: Probleme mit Registry-Abfrage von zwei Registry-Pfaden
Am im Forum: Rund um die Programmierung

Kann natürlich sein. Bei dem einen Arbeitgeber, wo ich der Admin installiere ich die Software immer als Admin von Hand. Habe da leider auch keinen Server der das machen könnte. Der zweite Arbeitgeber, wo ich nur ein kleines Licht in der Abteilung bin hat hingegen eine gigantische IT-Infrastruktur mit SCCM und co. zur Verfügung. Denke mal, dass es da deswegen anders installiert wurde. Aber so prüfe ich jetzt einfach beide Pfade. Schadet ja auch nicht und gelernt habe ich auch gleich was.

Thema: c# Datum umwandeln?
Am im Forum: Grundlagen von C#

OK, jetzt gehts. Meine Güte. Was ein Umstand nur um nen blöden String auf Linie zu bringen. Danke für eure Geduld.


                    systemLastWindowsUpdate = result.ToString("yyyy-MM-dd");

Thema: c# Datum umwandeln?
Am im Forum: Grundlagen von C#

Also das "Problem" war, dass ich einfach mit dem String weiter arbeiten wollte. Für mich ist 6/22/2021 nunmal 6/22/2021. Für den Debugger offenbar nicht, obwohl er das sagt. Ist halt so. Verstehen tu ich das nicht (Siehe Bild)

Nun habe ich mich an das Beispiel aus der Doku gemacht. Das erste Beispiel habe ich nicht zum Laufen bekommen, trotz des richtigen Formats (M/dd/yyyy bzw. M/d/yyyy).

Das zweite Beispiel mit "with leading white space" hat dann immerhin ein Ergebnis gegeben, aber nicht, das, was ich mir erhofft habe. Umwandeln klappte natürlich damit erst recht nicht.


22.06.2021 00:00:00 +00:00


                    string stringDate = managementObject["InstalledOn"].ToString();
                    string format = "M/dd/yyyy"; // M/d/yyyy geht auch
                    CultureInfo provider = CultureInfo.InvariantCulture;
                    DateTimeOffset result = new DateTimeOffset();
                    result = DateTimeOffset.ParseExact(stringDate, format, provider, DateTimeStyles.AssumeUniversal);
                    systemLastWindowsUpdate = result.ToString();

Thema: c# Datum umwandeln?
Am im Forum: Grundlagen von C#

Wenn ich mit einem Beispiel nicht klar komme suche ich nach Alternativen. In der Programmierung gibt es ja in 99% der Fälle mehrere Wege zum Ziel. Mir ist es wichtig nach zu vollziehen was ich mache. Wenn dem nicht der Fall ist frage ich, wie bei der Sache mit dem ??-Parametern.

Die Microsoft-Doku hat mir übrigens bislang eher selten weiter geholfen. Auf stackoverflow wurde ich hingegen schon öfters fündig, zumindest dann nachdem ich wusste, wonach ich eigentlich suche. Dazu kamt dann in der Regel noch ihr, wo es dann partout klemmte.

Was ich in dem Fall jetzt nicht verstehe: Ich habe einen dummen String von beispielsweise 6/22/2021 oder 6.22.2021. Warum kann ich diese Zahl direkt in den Quelltext schreiben und umformatieren, aber nicht, wenn exakt die gleiche Zahl aus einer Variablen kommt? Das kapiere ich nicht.

Thema: c# Datum umwandeln?
Am im Forum: Grundlagen von C#

Ich finde es unfair immer zu behaupten ich würde die Doku nicht lesen. Das ich es vielleicht einfach nicht verstehe, darauf kommt Abt nicht :*(. Ich suche ja auch deswegen auch in anderen Quelle, wo das ganze nochmal anders erklärt oder dargestellt wird.

Thema: c# Datum umwandeln?
Am im Forum: Grundlagen von C#

Krieg es nicht geknackt

Das "beste" was jetzt bei rausgekommen ist das. Alle Versuche aus "x" ein gescheites Datum zu formatieren scheiterten.

Zitat
6.22.2021
Ich brauche es aber als 2021-06-22, damit es ordentlich in MySQL-Eingetragen werden kann. Die Spalte dort ist vom Tyo "date".


                var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_QuickFixEngineering");
                using (ManagementObjectCollection managementObjectCollection = searcher.Get())
                {
                    ManagementObject managementObject = managementObjectCollection.OfType<ManagementObject>().First();
                    string stringDate = managementObject["InstalledOn"].ToString();

                    DateTimeOffset PassDate = DateTimeOffset.UtcNow;
                    var dateFormat = stringDate;
                    var x = PassDate.ToString(dateFormat);

                    systemLastWindowsUpdate = x.ToString();

                }

Thema: c# Datum umwandeln?
Am im Forum: Grundlagen von C#

Ich poste das mal in den Grundlagen, weil ich denke ein Datum in ein anderes Format umwandeln ist eine Grundlage der Programmierung. Hoffe das passt so.
Also folgender Code funktioniert bestens:


            // Letzter Boot-Zeitpunkt auslesen
            try
            {
                var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
                using (ManagementObjectCollection managementObjectCollection = searcher.Get())
                {
                    ManagementObject managementObject = managementObjectCollection.OfType<ManagementObject>().FirstOrDefault();

                    string stringDate = managementObject["LastBootUpTime"].ToString();
                    DateTime dt = ManagementDateTimeConverter.ToDateTime(stringDate);
                    systemLastStart = dt.ToLongDateString();
                    computerLocation = managementObject["Description"].ToString();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Problem im Abschnitt Letzter Boot-Zeitpunkt");
            }
Bekomme dann ein gutes Ergebnis wie
Zitat
Mittwoch, 7. Juli 2021

Ich benutze den gleichen Code nun für die Abfrage von Win32_QuickFixEngineering und dem managementObject["InstalledOn"].
Das gibt folgenden Fehler:
Zitat
System.ArgumentOutOfRangeException: Das angegebene Argument liegt außerhalb des gültigen Wertebereichs.
Parametername: dmtfDate bei System.Management.ManagementDateTimeConverter.ToDateTime(String dmtfDate)

Schreibt man den Code wie folgt, dann gibt es ein Datum wie dieses zurück:


[...]
systemLastWindowsUpdate = managementObject["InstalledOn"].ToString();
[...]
Zitat
6/22/2021

Also recherchiert, gemacht und getan, wie man das Format mm/dd/yyyy umwandeln kann.
Scheinbar guter Treffer hier.
Code umgesetzt, aber es gibt folgenden Fehler:



[...]
using System.Globalization;

string d = Convert.ToDateTime("09/25/2011").ToString("dd/MM/yyyy"); //returns 25/09/2011
DateTime date = DateTime.Parse("09/25/2011", new CultureInfo("en-GB")); // returns 09/25/2011
string d2 = date.ToString("dd/MM/yyyy"); //should return 25/09/2011
systemLastWindowsUpdate = d.ToString();
[...]
Zitat
System.FormatException: Die Zeichenfolge wurde nicht als gültiges DateTime erkannt.
bei System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
bei System.Convert.ToDateTime(String value)

Auch folgender Versuch scheitert mit
Zitat
System.ArgumentOutOfRangeException: Das angegebene Argument liegt außerhalb des gültigen Wertebereichs.
Parametername: dmtfDate bei System.Management.ManagementDateTimeConverter.ToDateTime(String dmtfDate)


            try
            {
                var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_QuickFixEngineering");
                using (ManagementObjectCollection managementObjectCollection = searcher.Get())
                {
                    ManagementObject managementObject = managementObjectCollection.OfType<ManagementObject>().FirstOrDefault();
                    string stringDate = managementObject["InstalledOn"].ToString();
                    DateTime dt = ManagementDateTimeConverter.ToDateTime(stringDate);

                    int day = dt.Day;
                    int month = dt.Month;
                    int year = dt.Year;

                    string date = (year + "-" + month + "-" + day).ToString();

                    systemLastWindowsUpdate = date;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                //MessageBox.Show("Problem im Abschnitt Windows Update.");
            }


Ich habe natürlich mehr recherchiert und probiert, aber ich komme nicht zum Erfolg. Kann mir bitte jemand sagen, wo es nun schon wieder klemmt?
Als kleiner Bonus suche ich noch die Möglichkeit Win32_QuickFixEngineering nach dem letzten Datum zu sortieren und nur dieses dann auszugeben.

Thema: Probleme mit Registry-Abfrage von zwei Registry-Pfaden
Am im Forum: Rund um die Programmierung

Danke euch. Ich habe das using bei den Abfragen überall vorne angestellt, wo ein IDisposable in der Definition ist. Das ist ja bei ManagementObjectCollection auch der Fall.

Das Projekt steht definitiv auf AnyCDU, sowohl bei Debug, als auch Release. Den Fehler mache ich nicht noch einmal

Bei der in diesem Thread genannten Abfrage klappt das mit dem using aber nicht. Kann machen was ich will, endet immer in einem Fehler . Das diese Doppelte Abfrage so kompliziert sein muss *grummel*

Warum sich der Citrix Workspace-Client manchmal in HKLM und manchmal in HKCU einträgt weiß ich nicht. Bei mir hier zu Hause und bei meinem Arbeitsplatz bei meinem einen Arbeitgeber findet sich der Eintrag in HKLM, bei meinem Arbeitsplatz beim anderen Arbeitgeber in HKCU.

Thema: Probleme mit Registry-Abfrage von zwei Registry-Pfaden
Am im Forum: Rund um die Programmierung

Danke für eure Antworten. Jetzt sieht der Code so aus, ist viel schöner und übersichtlicher und funktioniert . War das so gemeint? Warum muss man bei der Abfrage ?? verwenden und nicht ||. Ist ?? sowas wie eine "X ODER Y"-Abfrage? Dann müsste doch || genauso funktionieren? Für was steht das ? vor dem GetValue? Ich kannte das noch gar nicht.
Die MessageBoxen habe ich nur während der Entwicklung. Wenn es funktioniert landen die Werte natürlich in Variablen.


            // Citrix Workspace Version ermitteln
            try
            {
                var test = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\CitrixOnlinePluginPackWeb").GetValue("DisplayVersion") ?? 
                    RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CitrixOnlinePluginPackWeb").GetValue("DisplayVersion");
                if(test == null)    
                {
                    MessageBox.Show("Nicht installiert");
                    }
                else
                {
                    MessageBox.Show(test.ToString());
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Problem im Abschnitt Citrix Workspace.");
            }

Thema: Probleme mit Registry-Abfrage von zwei Registry-Pfaden
Am im Forum: Rund um die Programmierung

Zunächst: Ich habe eine Lösung für das Problem, aber der daraus entstandene Code ist sehr umständlich und lang geworden. Ich hatte überlegt den Code erst in die Rubrik Code-Reviews zu posten und um Vorschläge zu bitten. Da ich aber selbst schon eine Vorstellung davon habe, wie das am Ende aussehen könnte (sollte?), aber daran scheitere habe ich es hier gepostet.

Ich habe hier eine Abfrage in der Registry. Tests auf verschiedenen Rechnern ergab, dass sich der gesuchte Schlüssel in zwei Pfaden verstecken kann.
Ich hatte es mir so vorgestellt, dass ich den Code wie folgt schreibe, aber nun weiß ich nicht, wie ich an den Wert von GetValue komme. Selbst, wenn ich GetValue extra nochmal abfrage, fehlt mir die Variable um auf den Registry-Pfad zuzugreifen. Alle Versuche da was vorne an zu stellen münden in einem Fehler. Könnt ihr mir bitte helfen?


            // Citrix Workspace Version ermitteln
            try
            {
                if (RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\CitrixOnlinePluginPackWeb").GetValue("DisplayVersion") == null)
                {
                    if (RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CitrixOnlinePluginPackWeb").GetValue("DisplayVersion") == null)
                    {
                        MessageBox.Show("Nicht installiert");
                    }
                    else
                    {
                        MessageBox.Show("???");
                    }
                } else
                {
                    MessageBox.Show("???");
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Problem im Abschnitt Citrix Workspace.");
            }

Edit: Achja: Sind beide Pfade ungültig ist der Debugger sehr unglücklich und gibt den gefürchteten "System.NullReferenceException: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."-Fehler zurück. Ich habe den Beitrag dazu gelesen, komme damit aber nicht weiter.

Thema: Sammelthema Wünsche und Bugreports myCSharp
Am im Forum: Wünsche und Kritik

OK, ich frage dann einfach $später nochmal nach. Dachte es ist einfach nur ne Einstellung, wo man eine Zahl einträgt und fertig.

Thema: Sammelthema Wünsche und Bugreports myCSharp
Am im Forum: Wünsche und Kritik

Ich kann die Gründe nachvollziehen, gerade das Argument des Vandalismus, wenn jemand (im Zorn) die Community verlässt oder wie hier, als jemandem geholfen wurde und zum "Dank" dann seinen Code wieder löschen wollte.

Ob es da nicht ausreichen würde das zu verhindern, sobald eine Antwort gekommen ist oder das Zeitlimit so "eng" gefasst sein muss ist eine andere Sache. Ich will da auch nicht weiter drauf rumreiten, weil es eine Entscheidung eurerseits ist. Ich hatte es angeregt, wurde begründet abgelehnt und es ist für mich auch OK.

Kann man es aber vielleicht trotzdem so machen, dass die ersten paar Minuten nach Absenden eine Änderung noch nicht als solche Markiert wird, wenn man eine vor nimmt? Ich mache das relativ häufig, trotz Vorschaufunktion. Ist irgendwie ne Krankheit, dass ich hinterher nochmal was ändere, vor allem klarer machen möchte oder dann doch noch ein (Rechtschreib-) Fehler auffällt. Ärgere mich dann selbst und würde es gerne vertuschen.

Thema: Softwareversion (aus Registry) wird im Release-Modus erkannt, im Debug-Modus nicht
Am im Forum: Rund um die Programmierung

Danke für deine Hinweise Abt. Ich habe das Projekt wieder umgestellt. Das "Problem" ist wohl, dass beim Aufruf von regedit unter Windows die x64-Version genommen wird, während unter Visual Studio (zumindest C#) standardmäßig die x86-Version genommen wird. Da können die Pfade dann manchmal nicht identisch sein. (Quelle)

Ich habe mir jetzt so beholfen, dass ich folgenden Code verwende, wenn ich die explizit die x64-Version der Registry haben will. Ich hoffe das findet eure Zustimmung.


                RegistryKey findeEintrag = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"Pfad");

Thema: Aktuelle Github Version verwenden / Nuget-Package erstellen?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich habe mein kleines Projekt, dass momentan als .net 4.8 läuft, kurzerhand mal in eine .net 5 App kopiert. Läuft soweit auch ganz gut. Ob das bei meinem Mini-Projekt jetzt Sinn macht das auf .net 5 App umzustellen sei erstmal dahingestellt (was meint ihr? LTS wird es eh erst mit .net 6 geben.) Allerdings sind zwei Pakete nicht ganz mit .net 5 kompatibel und ich bekomme eine entsprechende Warnung. (Scheint trotzdem alles zu funktionieren, aber ist natürlich trotzdem keine Basis auf der man (weiter) arbeiten will) Auf Github wurde die Kompatibilität bereits hergestellt, aber noch nicht als Nuget veröffentlicht.

Bei dem einen Projekt handelt es sich um AutoUpdater.NET
Das Andere ist WindowsAPICodePack Bei diesem liegt die Bitte für ein Nuget-Release seit 8. Januar vor, aber ist halt bislang nicht passiert.

Die Frage ist also, ob man sich aus dem Github-Repository selbst ein Nuget Paket machen kann oder es anderweitig möglich ist die neusten Änderungen zu nutzen?

Thema: Mehrere Bildschirme ermitteln und getrennt! anzeigen und die echte Auflösung ermitteln
Am im Forum: Rund um die Programmierung

So, ich habe jetzt immer wieder und heute quasi den ganzen Tag (auch auch die Tage davor immer wieder mal) damit zugebracht eine neue Lösung zu finden. Nachdem Th69 geschrieben hat, dass die ganze Umwandlung vom ersten Post eh für den Eimer ist (womit er natürlich vollkommen Recht hat) habe ich jetzt hoffentlich die richtige Lösung gefunden. Leider schaffe ich es jetzt nicht mehr, dass beide Bildschirme gefunden werden. Kann hier bitte jemand nachhelfen? Ich will aber ohnehin, dass beide Bildschirme separat gelistet werden, also beispielsweise so:


Monitor 1: Modell, Seriennummer, Größe, Auflösung
Monitor 2: Modell, Seriennummer, Größe, Auflösung


                var searcher = new ManagementObjectSearcher (@"root\wmi", "SELECT * FROM WmiMonitorID");

                foreach (ManagementObject ufn in searcher.Get())
                {
                    if (ufn["UserFriendlyName"] == null)
                    {
                        monitorModel = "Keine Bezeichnung";
                    }
                    else
                    {
                        ushort[] ufnArray = (ushort[])ufn["UserFriendlyName"];
                        foreach (ushort ufnValue in ufnArray)
                        {
                            var ufnASCIIBytes = new byte[] { (byte)ufnValue };
                            monitorModel += Encoding.ASCII.GetString(ufnASCIIBytes);
                        }
                    }
                }

                foreach (ManagementObject sn in searcher.Get()) {
                    if (sn["SerialNumberID"] == null) {
                        monitorModel = "Keine Seriennummer";
                    } else {
                        ushort[] snArray = (ushort[])sn["SerialNumberID"];
                        foreach (ushort snValue in snArray) {
                            var snASCIIBytes = new byte[] { (byte)snValue };
                            monitorSerial += Encoding.ASCII.GetString(snASCIIBytes);
                        }
                    }
                }

Komischerweise werden mit dieser Lösung beide Auflösungen richtig erkannt


                // Bildschirm-Auflösung ermitteln.
                try {
                    foreach (var screen in Screen.AllScreens) {
                        var screenWidth = screen.Bounds.Width.ToString();
                        var screenHeight = screen.Bounds.Height.ToString();

                        monitorResolution += screenWidth + " x " + screenHeight + " | ";
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Systeminventory hat ein Problem im Abschnitt Bildschirm-Auflösung.");
                }

Und auch dieser Code gibt mit beide Bildschirmgrößen zurück, wenngleich mein Fernseher, der für diesen Test herhalten muss schon etwas größer als 7" ist. (19 Zoll Breitbild oder so, kleiner als mein 24" auf jeden Fall. Unterm Strich ist es auch egal.)


                // Monitorgröße ermitteln
                // https://www.c-sharpcorner.com/forums/get-the-monitor-size
                try 
                {
                    ManagementObjectCollection mozReturn1;
                    ManagementObjectSearcher mozSearch1;

                    mozSearch1 = new ManagementObjectSearcher(@"root\wmi", "SELECT * FROM WmiMonitorBasicDisplayParams");
                    mozReturn1 = mozSearch1.Get();

                    foreach (ManagementObject moz1 in mozReturn1) {
                        double width = (byte)moz1["MaxHorizontalImageSize"] / 2.54;
                        double height = (byte)moz1["MaxVerticalImageSize"] / 2.54;
                        double diagonal = Math.Sqrt(width * width + height * height);
                        monitorSize += Math.Round(diagonal, 0).ToString() + "\" | ";
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Systeminventory hat ein Problem im Abschnitt Bildschirmgröße.");
                }

Thema: Codeformatierung in Visual Studion 2019 ändern
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich möchte es nicht "Resistenz" nennen. Das klingt so nach "uneinsichtig" und "besserwisserisch". Ich komme mit dem Stil besser klar. Das ist alles. Ich habe sonnst keine "Dafür" oder "Dagegen" Gründe.

Ich will aber gucken dran zu denken den Code anzupassen, wenn ich im Forum stelle, damit ihr es einfacher habt. Seid mir aber bitte nicht böse, wenn ich es mal vergesse oder mal ne Klammer übersehe.

Thema: Codeformatierung in Visual Studion 2019 ändern
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hmmm, es ist Java-Codestil? DAS wäre wirklich ein Argument von dem Stil Abstand zu nehmen. Wieso programmiert man in Java so und in anderen Programmiersprachen anders? Gibts da Gründe für?

Was das Programmieren in "etablierten" Teams angeht. So gut werde ich wohl nicht, als das ich da mitmischen könnte . Bin ja froh, wenn ich mit meinem eigenen Code klar komme. - und ihr.

Thema: Codeformatierung in Visual Studion 2019 ändern
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Also ich finde die Standardformatierung aus oben genannten Gründen nicht so toll. Als Argument kommt noch hinzu, dass der sich der Code unnötig in die Länge zieht. Mit "meiner" Methode ist er viel kompakter.

Ich denke da bin ich nicht der Einzige der "meinen" Codestil favorisiert, sonnst wäre das ja nicht in Visual Studio einstellbar, oder?

Thema: Sammelthema Wünsche und Bugreports myCSharp
Am im Forum: Wünsche und Kritik

Zitat von Abt
Zitat von Little Tester
Ich würde mir wünschen, dass man so lange editieren kann, bis jemand geantwortet hat und darüber hinaus auch dann die Zeit in der Foren / Threadübersicht entsprechend aktualisiert wird.
Welchen Grund gibt es denn, dass man einen Beitrag nach *30 Minuten* nochmal editieren muss?
Da ist doch wirklich mehr als genug Zeit, wenn etwas unüberlegt war.
Diesen zum Beispiel oder wenn über Stunden noch keine Antwort kam und man selbst weitere Informationen hat oder schon etwas weiter kam. Anpassen von Datum / Uhrzeit deswegen falls schon jemand rein geguckt hat.

Thema: Softwareversion (aus Registry) wird im Release-Modus erkannt, im Debug-Modus nicht
Am im Forum: Rund um die Programmierung

dannoe hatte Recht. Habe da wohl bissel rumgespielt gehabt. Danke dir.

Als ich die Zielplattform "Any CPU" umgestellt habe werden die beiden Softwares nicht mehr erkannt. Als ich es auf x64 umgestellt habe hingegen schon.

Ich habe es jetzt für den Debug-Modus und Release-Modus auf x64 gestellt. x86 ist ja eh veraltet und x86-Betriebssysteme werden bei uns nicht mehr eingesetzt. Oder spricht was dagegen die Architektur auf x64 umzustellen?

Thema: Sammelthema Wünsche und Bugreports myCSharp
Am im Forum: Wünsche und Kritik

Ich hatte gerade das Problem, dass ich einen Beitrag editieren / was hinzufügen wollte, dass aber nur 30 Minuten nach Erstellung geht. Es gab noch keine Antwort.
Ich würde mir wünschen, dass man so lange editieren kann, bis jemand geantwortet hat und darüber hinaus auch dann die Zeit in der Foren / Threadübersicht entsprechend aktualisiert wird.

Außerdem erscheint eine 403-Fehlerseite (weil ich vor Ablauf der Zeit das Editieren begonnen habe, aber nach dem Ablauf posten wollte) und das editierte / neu hinzugefügte ist weg. War in dem Fall nicht schlimm, aber wenn man etwas mehr editiert kann das schon ärgerlich sein.

Nett wäre es auch, wenn die ersten ~5 Minuten nach Erstellung nicht angezeigt wird, das editiert wurde.

Thema: Softwareversion (aus Registry) wird im Release-Modus erkannt, im Debug-Modus nicht
Am im Forum: Rund um die Programmierung

Mist, paar Sekunden zu spät zum Editieren:

Ich habe das Programm gerade auf einem Rechner laufen lassen, wo ESET installiert ist. Auch hier das Problem, dass es im Debug-Modus nicht erkannt wird, im Release-Modus schon.
Der Pfad lautet:

Zitat
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ESET\ESET Security\CurrentVersion\Info");

Ich bin mit Adminrechnten auf den Rechner, weil ich da heute eh ne Fernwartung drauf mache. Es macht also keinen Unterschied, ob das Programm mit oder ohne Adminrechten läuft.

Thema: Softwareversion (aus Registry) wird im Release-Modus erkannt, im Debug-Modus nicht
Am im Forum: Rund um die Programmierung

Danke für deine Antwort:

Also das Programm teste ich auf meinem Geschäftsrechner mit Benutzerrechten (keine Adminrechte), so wie das nachher auch laufen wird.
Ich teste die Release und Debug-Variante immer mit dem gleichen Benutzer.

Das mit der Variable habe ich korrigiert. Hast natürlich vollkommen Recht. Danke für diesen Hinweis.
Ich habe die Abfrage angepasst:


            // Dell Command Update Version ermitteln
            try 
            {
                RegistryKey findDCU = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Dell\UpdateService\Clients\CommandUpdate\Preferences\Settings");
                if (findDCU != null)
                {
                    Object dcuVersion = findDCU.GetValue("ProductVersion");
                    if (dcuVersion != null)
                    {
                        string version = dcuVersion.ToString();
                        softwareDellCommandUpdate = version;
                    } 
                    else
                    {
                        softwareDellCommandUpdate = "Version unbekannt";
                    }
                } 
                else
                {
                    softwareDellCommandUpdate = "Nicht installiert";
                }
            } 
            catch (Exception)
            {
                MessageBox.Show("Systeminventory hat ein Problem im Abschnitt Dell Command Update.");
            }
Im Debug-Modus steigt er bei "Nicht installiert" aus, scheint also ein Problem mit dem Pfad zu haben, aber warum? Was macht der Debug-Modus anders als der Release-Modus?

Thema: Softwareversion (aus Registry) wird im Release-Modus erkannt, im Debug-Modus nicht
Am im Forum: Rund um die Programmierung

Wenn ich folgenden Code verwende, um den Versionsstand einer Software (in dem Fall Dell Command Update) auszulesen erhalte ich im Debug-Modus die Meldung, dass die Software nicht installiert sei. Im Release-Modus wird hingegen die Installation, bzw. die Version erkannt. Ich verwende die gleiche Methodik um auch andere Softwareversionen zu erfragen und das klappt sonnst ganz gut. Hier der Code der Problemsoftware:


            // Dell Command Update Version ermitteln
            try {
                RegistryKey findDCU = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Dell\UpdateService\Clients\CommandUpdate\Preferences\Settings");
                if (findDCU != null) {
                    Object dcuVersion = findDCU.GetValue("ProductVersion");
                    if (dcuVersion != null) {
                        string version = findDCU.GetValue("ProductVersion").ToString();
                        softwareDellCommandUpdate = version;
                    } else {
                        softwareDellCommandUpdate = "Nicht installiert";
                    }
                } else {
                    softwareDellCommandUpdate = "Nicht installiert";
                }
            } catch (Exception) {
                MessageBox.Show("Systeminfo hat ein Problem im Abschnitt Dell Command Update.");
            }

Und hier mal der Code, der sowohl im Debug-Modus, als auch im Release-Modus funktioniert.


            // MS-Teams Version ermitteln
            try {
                RegistryKey findMsTeams = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Teams");
                if (findMsTeams != null) {
                    Object msteamsVersion = findMsTeams.GetValue("DisplayVersion");
                    if (msteamsVersion != null) {
                        string version = findMsTeams.GetValue("DisplayVersion").ToString();
                        softwareMsTeams = version.Substring(0, 5);
                    } else {
                        softwareMsTeams = "Nicht installiert";
                    }
                } else {
                    softwareMsTeams = "Nicht installiert";
                }
            } catch (Exception) {
                MessageBox.Show("Systeminfo hat ein Problem im Abschnitt MS-Teams.");
            }

Jemand eine Idee, warum das so sein könnte?

Thema: Programm soll nichts tun, bis Rechner online ist
Am im Forum: Code-Reviews

Es gibt leider wirklich eine Exception. Offline oder nicht vorhandener Host ist offenbar nicht vorgesehen

Thema: Ein Daumen hoch oder "Rockt" Button
Am im Forum: Wünsche und Kritik

Ja, ich fände eine Art "Danke"-Button oder so auch super. Ich habe jetzt schon so viel freundliche Hilfe bekommen, dass ich schon ein schlechtes Gewissen habe, weil man irgendwie so nichts zurückgeben kann. Denke treu dem "Jäger und Sammler"-Prinzip wäre es gut, wenn helfende Personen "Dankes" sammeln könnten.