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 dannoe
Thema: WPF-Window immer über(!) der Taskbar
Am im Forum: GUI: WPF und XAML

Die Frage betrifft zwar c++, aber gilt natürlich trotzdem: is-task-manager-a-special-kind-of-always-on-top-window-for-windows-10

Thema: Sicheres, lokales Passwort
Am im Forum: Grundlagen von C#

Ich glaube einer von uns hat die Frage falsch verstanden.

So wie ich es lese, hat Abraham eine Funktion die seine Datenbank verschlüsselt und entschlüsselt (mit einem festen Schlüssel, ungleich dem Masterpasswort) und er möchte dass die Datenbank nur mit einem bestimmten Passwort entschlüsselt werden kann. Um das zu erreichen hat er deswegen ein Passwort als Hash in einer Datei abgelegt. Wenn jetzt jemand die Datenbank entschlüsseln möchte, prüft er in seinem Programm ob das eingegebene Passwort gleich dem Hash in der Datei entspricht. Falls dem so ist dann stößt er den Entschlüsselungs-Mechanismus mit seinem festen Schlüssel (nicht dem Passwort) an.

D.h. in meinen Augen hat er nur nicht daran gedacht, dass die Verschlüsselungsfunktion selbst, das Masterpasswort verwenden kann. Dadurch muss auch nirgendwo das Masterpasswort gespeichert werden.

Zitat von Abt
Zitat von dannoe
Wenn dann jemand versucht die Passwortdatenbank mit einem falschen Passwort zu entschlüsseln, dann kommt nur Kauderwelsch raus.
Das ist ein Mechanismus zur Abwehr einer Brute-Force-Methode
Mir fällt leider der Name dazu nicht ein.
Nein, ich meine eine ganz normale symmetrische Verschlüsselung. Wenn ich etwas mit einem Schlüssel A verschlüssle und es versuche mit Schlüssel X zu entschlüsseln, dann kommt halt irgendwas raus.
Du meinst vermutlich die "Key derivation", dabei wird X-mal der Schlüssel "verformt" um so die benötigte Entschlüsselung bzw. Rechenzeit zu erhöhen.

Thema: Sicheres, lokales Passwort
Am im Forum: Grundlagen von C#

Du musst deine Passwortdatenbank mit dem Masterpasswort (bzw. mit einem Hash des Passworts) verschlüsseln, dann kann keiner irgendwas austauschen.
So macht es bspw. auch KeePass. (Ein Open Source Passwortmanager geschrieben in C#)

Wenn dann jemand versucht die Passwortdatenbank mit einem falschen Passwort zu entschlüsseln, dann kommt nur Kauderwelsch raus.

Thema: AutoUpdater.NET gibt Fehler, wenn Programm aus Autostart gestartet wird
Am im Forum: Rund um die Programmierung

Und lass dir bitte mal im Falle des automatischen Starts den Environment.CurrentDirectory ausgeben.

Thema: AutoUpdater.NET gibt Fehler, wenn Programm aus Autostart gestartet wird
Am im Forum: Rund um die Programmierung

Bitte gib mal anstatt Environment.CurrentDirectory testweise (!) ein festen Pfad an. Beim automatischen Start ist vermutlich das Arbeitsverzeichnis (CurrentDirectory) ein anderes.
Du kannst auch mal die automatisch gestartet Anwendung debuggen, indem du dich nachträglich an den Prozess hängst.

Thema: AutoUpdater.NET gibt Fehler, wenn Programm aus Autostart gestartet wird
Am im Forum: Rund um die Programmierung

Wenn deine Anwendung als Dienst läuft, dann müsste Environment.CurrentDirectory ein Windows Verzeichnis sein. Deswegen versucht er es dort hinzuschreiben.

Edit:
Das hier sollte dein Problem lösen: system.unauthorizedaccessexception · Issue #378 · ravibpatel/AutoUpdater.NET

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

Ich vermute, dass die Nachrichten in deinem Postausgang die Nachrichten im Posteingang des Empfängers sind und somit erst gelöscht werden, wenn der Empfänger diese löscht.

Edit: Damit meine ich es ist der gleiche Datensatz in der DB und somit könntest du sonst deine Nachrichten im Posteingang des Empfängers löschen.

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

Zitat von Abt
Welchen Grund gibt es denn, dass man einen Beitrag nach *30 Minuten* nochmal editieren muss?

Es würde reichen, wenn man den Titel nachträglich noch ändern könnte bzw. einen Präfix anhängen kann. (z. B. ein [Erledigt] oder [Gelöst])

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

Hast du verschiedene Plattformen (x86 vs x64) in der Debug und Release Konfiguration?

Edit: siehe https://stackoverflow.com/a/3872535/1627022

Thema: RestAPI oder vergleichbares
Am im Forum: Datentechnologien

Zitat von gfoidl
...
Wenn der Thread aber "erledigt" ist, so kannst du den Titel (via Startbeitrag editieren) mit einem [erledigt] voranstellen, damit diese deutlicher sichtbar ist.
...


Gibt es für Startbeiträge eine Sonderregel? Normale Antworten können Normalsterbliche nach einer gewissen Zeit nicht mehr editieren.

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

Ja siehe Screenshot im Anhang

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

Mit

Zitat
großen "Screen"
meinte er den statischen Zugriff auf System.Windows.Forms.Screen (Api-Docs) direkt und nicht auf eine Instanz davon. Und dort gibt es eben kein statisches Property "Bounds".
Was aber natürlich auch logisch ist, weil es kein Bounds über alle Screens geben kann. Die Screens könnten total unterschiedlich groß sein und total wirr angeordnet sein.

Thema: Dictionary Value Referenz Null setzen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Call-by-Reference betrifft die Übergabe von Referenzen bzw. Werte an Methoden. (siehe ref keyword - C# Reference)
In deinem Beispiel erstellst du eine neue Instanz und setzt die Referenz auf diese Instanz in deiner lokalen Variable testClass.
Anschließend überschreibst du den Inhalt (nicht aber das Ziel der Referenz) der lokalen Variable mit "null".

Was gehen würde wäre das hier:


TestClass myclass = new();
SetVariableToNull(ref myclass);
// jetzt ist die Variable myclass auch null

public void SetVariableToNull(ref TestClass testClass)
{
   testClass = null;
}

Dein Dictionary würde trotzdem noch die Referenz auf die ursprüngliche Instanz halten.

Thema: Gesplittete ZIPs erstellen
Am im Forum: Grundlagen von C#

DotNetZip (haf/DotNetZip.Semverd) müsste das können

Thema: Refresh eines einfachen window
Am im Forum: Grundlagen von C#

Es könnte auch hilfreich sein, wenn du die Software, die C# als Skriptsprache einbindet, erwähnst. Eventuell gibt es Leute die bereits mit dieser Software gearbeitet haben und dir direkt helfen können.

Thema: Warum kann ich Enum kein Int zuweisen?
Am im Forum: Grundlagen von C#

Zitat von Jompikumpi
Das Verhalten im obigen Code ist ein Bug, eigentlich sollte auch die Zuweisung von „0“ nicht funktionieren.

Siehe why-can-i-assign-0-0-to-enumeration-values-but-not-1-0

Wenn man den Beitrag auf Stackoverflow richtig liest, dann steht dort, dass die Zuweisung von 0 zu einem Enum laut C# Spezifikation erlaubt ist. Nur die Zuweisung von 0.0 (0.0m und 0.0f) ist ein Bug und sollte nicht erlaubt sein. Der von getit gepostete Code enthält also keinen Bug, sondern die C# Spezfikation schreibt es so vor.

Thema: TCP Client / Server verstehen sich nicht
Am im Forum: Netzwerktechnologien

Hier vielleicht etwas verständlicher:


UInt16 messageId = 0x01; // = 1
UInt16 payloadLength = 0x00; // = 0

var messageIdArray = BitConverter.GetBytes(messageId);
var payloadLengthArray = BitConverter.GetBytes(payloadLength);

var connectSequence = new byte[] { messageIdArray[0], messageIdArray[1], payloadLengthArray[0], payloadLengthArray[1] }; // die Arrays könnte man automatisch mergen

Thema: TCP Client / Server verstehen sich nicht
Am im Forum: Netzwerktechnologien

Laut dem Auszug aus deiner Doku darfst du keine Leerzeichen mitschicken:

Zitat
unsigned char[] connect =
{
0 x 01, 0 x 00,
0 x 00, 0 x 00
};

Also analog in C# mit byte als Typ:


// UInt16
var connectSequence = new byte[] { 0x01, 0x00, 0x00, 0x00 };


Das hier ist übrigens Quatsch, damit wandelst du den Text in die zugehörigen UTF8 Byte Darstellung. Und auch mit ASCII wäre es quatsch. Du sollst Zahlen als Bytes schicken und keinen Text in Bytes umwandeln.


Encoding.UTF8.GetBytes("01 00 00 00");


Thema: Outlook Timing / Objektprobleme
Am im Forum: Office-Technologien

Zum eigentlichen Problem kann ich leider nichts beitragen.

Zitat von ChrisProg
...
Ich weiß, das ich das vermutlich auch mit EWS lösen könnte, aber da der Kunde wünscht, das (zu Kontollzwecken) die Mails nicht sofort raus gehen, muss die Möglichkeit des Offline-Betriebes möglich sein - u. da weiß ich nicht, ob das mit EWS möglich ist (wenn ich das richtig verstanden habe, dann übergeht EWS ja Outlook, richtig?)...
...

Das sollte gehen. Die E-Mails werden dann halt nur in einem Ordner abgelegt und müssen manuell versendet werden.

CreateItem
Und dann mit MessageDisposition = "SaveOnly" in einen Ordner speichern.

Thema: TCP Client / Server verstehen sich nicht
Am im Forum: Netzwerktechnologien

Zeig doch mal etwas Code wie du z. B. die 01 00 00 00 sendest.

Zitat von Tossi65
url: https://sourceforge.net/projects/y-a-terminal/

YAT ist ja sogar in Csharp geschrieben. Dann schau dir doch einfach an wie die es machen

Thema: TCP Client / Server verstehen sich nicht
Am im Forum: Netzwerktechnologien

Du kannst auch mit Wireshark nachvollziehen welche Netzwerkpakete über deinen PC verschickt werden. Du musst dann lediglich dieses YAT und dein Programm vergleichen.

Wireshark · Go Deep.

Thema: Hintergrundfarbe setzten für jedes Object in einer Form
Am im Forum: GUI: Windows-Forms

Der sender Parameter enthält bei Controls eigentlich immer das Objekt, welches das Event ausgelöst hat. Um darauf Zugriff zu erhalten musst du es dann noch casten (siehe Casting and type conversions - C# Programming Guide).

In neueren C# Versionen gibt es dafür das pattern matching (siehe How to safely cast by using pattern matching and the is and as operators):


private void Control_Enter(object sender, System.EventArgs e)
{
    if (sender is System.Windows.Forms.TextBox textbox)
    {
        textbox.BackColor = Color.Red;
    }
}

Früher:


private void Control_Enter(object sender, System.EventArgs e)
{
    var textbox = sender as System.Windows.Forms.Textbox;
    if (textbox != null)
    {
        textbox.BackColor = Color.Red;
    }
}

Thema: Jede Datei überprüfen - ggf. Dummy Datei erstellen.
Am im Forum: Grundlagen von C#

Zitat von Tommylik
...
die Wörter getauscht und rufe die Schleifen 2 x auf.
Wenn ich nur eine bräuchte, wäre es schöner.
...

Lager deinen Code in eine Methode ausund rufe diese Methode 2x mit unterschiedlichen Parametern auf.


        private void MyExportTestMethodXyz(string strFile_IB, string strFolder, string filenameSuffix) {
            for (int i = 0; i < 6; i++) {
                string SourcePath = @"D:\S7_Export\Sensopart\x015id02xa1\";
                string strZusatz = $"{strFile_IB}_x015id02xa1_Job{i + 1}_{filenameSuffix}.jpg";
                string strDummy = $"15id02_Job{i + 1}_{filenameSuffix}_Dummy.txt";
                string SourceFullPath = SourcePath + strZusatz;
                string TargetFullPath = @"D:\S7_Export\AppData\" + strFolder;
                string result = Path.GetFileName(SourceFullPath);
                string[] fileEntries = Directory.GetFiles(SourcePath, strZusatz, SearchOption.TopDirectoryOnly);

                if (fileEntries.Length > 0)
                {
                    Directory.Move(SourceFullPath, Path.Combine(TargetFullPath, result));
                }
                else
                {
                    //Dummydatei im Zielordner erstellen
                    File.WriteAllText(Path.Combine(@"D:\S7_Export\AppData\", strFolder, strDummy), string.Empty);
                }
            }
        }

und dann aufrufen:


MyExportTestMethodXyz(strFile_IB, strFolder, "Pass");
MyExportTestMethodXyz(strFile_IB, strFolder, "Fail");

Und du solltest wirklich diese ungarische Notation entfernen.

Thema: Jede Datei überprüfen - ggf. Dummy Datei erstellen.
Am im Forum: Grundlagen von C#

Dein Substring-Gefummel funktioniert nicht mehr, wenn dein sourceDirectory ein Schrägstrich am Ende enthält.

Außerdem: Welcher der Sätze ist leichter für dich zu verstehen:

1. "Wenn du mir einen Pfad gibst, dann liefere ich dir den Dateinamen des Pfades zurück"

2. "Wenn du mir einen String gibst, dann gebe ich dir einen Teilbereich zurück. Den Start des Teilbereichs errechne ich anhand der Länge eines anderen Strings und addiere magischerweise 1 darauf."

Du und andere werden später dankbar sein, wenn dein Code selbsterklärend ist und sie nicht erst überlegen müssen was das Substring eigentlich macht.

Thema: Probleme mit MSFT_PhysicalDisk - Ermitteln ob SSD oder HDD
Am im Forum: Rund um die Programmierung


ManagementScope scope = new ManagementScope(@"\\.\root\microsoft\windows\storage");
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM MSFT_PhysicalDisk");
string type = "";
scope.Connect();
searcher.Scope = scope;

foreach (ManagementObject queryObj in searcher.Get())
{       
    switch (Convert.ToInt16(queryObj["MediaType"]))
    {
        case 1:
            type = "Unspecified";
            break;

        case 3:
            type = "HDD";
            break;

        case 4:
            type = "SSD";
            break;

        case 5:
            type = "SCM";
            break;

        default:
            type = "Unspecified";
            break;
    }
}
searcher.Dispose();
Quelle: What is the easiest way in C# to check if hard disk is SSD without writing any file on hard disk?

Thema: Verweis auf DLL im kompilierte Projekt in ein Unterverzeichnis bringen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

siehe Können Libraries beim Erstellen einer Solution eingebunden werden? (erster Post von Th69)

Thema: Jede Datei überprüfen - ggf. Dummy Datei erstellen.
Am im Forum: Grundlagen von C#

Directory.GetFiles liefert dir die Dateien eines Verzeichnisses zurück. Du versuchst aber ständig einen Dateipfad an die Methode zu übergeben.

Thema: Defender erkennt Trojan:Script/Wacatac.B!ml bei InnoSetup
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Deine Datei bei Microsoft als False-Positive einreichen:
Submit a file for malware analysis - Microsoft Security Intelligence

(Ich glaube das geht auch direkt bei der Meldung unter Windows. Sicher bin ich mir aber nicht.)

Thema: Filter Liste mit Linq
Am im Forum: Rund um die Programmierung


var CountPerson = liste.Where(s => s.Name.Contains(name)).Count();

bzw vereinfacht:


var CountPerson = liste.Count(s => s.Name.Contains(name));

Thema: Web Browser Aktualisiert sich nicht
Am im Forum: GUI: Windows-Forms

Vermutlich wird dein JavaScript in deiner WinForms Anwendung nicht ausgeführt bzw. ist fehlerhaft. Welches Browser Control verwendest du in deiner Anwendung?