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 pollito
Thema: SQL-Datentyp <--> .Net-Datentyp
Am im Forum: Datentechnologien

Zitat von Abt
Naja, offenbar hast Du halt ein paar Basic-Missverständnisse, wenn Du erwartest, dass sowas zur Laufzeit kommt oder kommen könnte.
Sorry, aber wer redet von Laufzeit? Hier liegt deinerseits ein Missverständnis vor. Ich erstelle Zugriffsklassen... Aber das steht weiter oben.


Thema: SQL-Datentyp <--> .Net-Datentyp
Am im Forum: Datentechnologien

Können wir das Thema als beendet erachten? Ich habe bereits dargelegt, dass ich die Infos aus dem Schema ermittle wie z. B. hier:

Zitat
Die Datentypen der Datenbankspalten erfahre ich über das Tabellenschema. An dieser Stelle wollte ich ansetzen. Wie aber beschrieben: Ich wollte mich vergewissern, dass es doch nicht anders (einfacher bzw. einheitlicher) geht.
Ich habe das hervorgehoben, damit das nicht nocheinmal untergeht.

Daraus fehlende Basics und sonstiges abzuleiten ist schon ein bisschen gewagt, insbesondere wenn gerade das vorgeworfen wird, was bereits erwähnt wurde und genutzt wird.

Thema: SQL-Datentyp <--> .Net-Datentyp
Am im Forum: Datentechnologien

Zitat von Abt
Zitat von pollito
Diese Info hätte man auch in den Dataprovider packen können.
(...) dafür gibt es Schemen, dass solche Informationen nicht zur Laufzeit übertragen werden müssen und damit einen sehr großen Overhead darstellen.
Genau da hatte ich diese Infos erwartet...


Thema: SQL-Datentyp <--> .Net-Datentyp
Am im Forum: Datentechnologien

Nochmals vielen Dank an alle! Ich hatte gehofft, dass der Hersteller des jeweiligen Dataproviders diese Infos irgendwo liefert, um keinen Mapper selbst machen zu müssen. Eigentlich wäre das nicht so schwer, denn der Hersteller beschreibt, wie die Daten zu interpretieren sind. Diese Info hätte man auch in den Dataprovider packen können.

Ich mappe dann selbst und erachte das Thema als beantwortet bzw. gelöst.

Lieben Dank und gesunde Grüße an alle!

Thema: SQL-Datentyp <--> .Net-Datentyp
Am im Forum: Datentechnologien

Zitat von T-Virus
Wenn ich dich richtig verstehe, willst du wissen welchen .NET Datentyp du für den jeweiligen Datenbank Spaltentypen nehmen musst.
Ja, genau so ist es.
Zitat von T-Virus
Dazu musst du schauen, wie der jeweilige ADO .NET Provider die Datentypen mappt.
Einen allgemeinen Ansatz kann man hier nur schwer umsetzen, wenn es über grundlegende Datentypen hinaus geht.
Das dachte ich mir. Aber bevor ich es selbst mache, wollte ich erst die Experten fragen.
Zitat von T-Virus
Nachtrag:
Das Mapping musst du so oder so über das Tabellen Schema machen.
Wenn du dies aber kennst, dann kannst du dies auch ohne Schema Abfrage machen.
Was genau ist den dein Ziel?
Die Datentypen der Datenbankspalten erfahre ich über das Tabellenschema. An dieser Stelle wollte ich ansetzen. Wie aber beschrieben: Ich wollte mich vergewissern, dass es doch nicht anders (einfacher bzw. einheitlicher) geht.
Zitat von T-Virus
Wenn du Daten auslesen musst, kannst du dies auch über einen OR Mapper machen.
Der kennt dann seine Datentypen, dann musst du es nicht selbst mappen.

T-Virus

Mein Ziel ist, C#-Zugriffsklassen aus den Datenbankstrukturen automatisch zu machen. Diese sollen für eine spezielle Anwendung erstellt werden. EF o. ä. ist in diesem Fall nicht erwünscht bzw. mit älteren Versionen von SQLBase erst gar nicht möglich.

Danke und lG!

Thema: SQL-Datentyp <--> .Net-Datentyp
Am im Forum: Datentechnologien

Zitat von Abt
Warum nimmst Dir nicht 10 Sekunden Zeit und schaust einfach in die Doku?
SQL Server-Datentypzuordnungen - ADO.NET
Danke, aber ich habe bereits mehr als 10 Minuten damit verbracht und die Doku kenne ich. Ich schrieb:
Zitat
Welche sind die empfohlenen Vorgehensweisen (...)
In erster Linie möchte ich wissen, ob es standarizierte Methoden gibt, die ich dafür verwenden kann, den CLR-Datentyp abzufragen.

Sicher, ich kann das Schema ermitteln und die Datenbank-Datentypen der Felder abfragen, um anhand von Tabellen (z. B. die von dier verlinkte Seite) selbst ein Mapping zu machen. Vielleicht geht es aber einfacher – darauf zielt meine Frage ab.

Im Übrigen, ich verwende den SQL-Server nicht, sondern SQLBase und MySQL.

Nochmals Danke!

Thema: SQL-Datentyp <--> .Net-Datentyp
Am im Forum: Datentechnologien

Verwendetes Datenbanksystem: <MySQL, SQLBase>

Hallo!

Ich war lange nicht mehr hier. Die neue Forensoftware sieht hübsch aus. Respekt! Aber nun zu meiner Frage:

Welche sind die empfohlenen Vorgehensweisen, um ein Mapping zwichen SQL- und .Net-Datentypen zu bewerkstelligen? Der Zugriff auf die Datenbanken soll mit dem .Net-Dataprovider erfolgen.

Danke und gesunde Grüße!

Thema: [Gelöst] Wie mache ich meine Datenbank-Implementierung unabhängig?
Am im Forum: Datentechnologien

Nochmals vielen Dank an euch alle! Eure Tipps haben mir weiter geholfen.
LG
René

Thema: [Gelöst] Wie mache ich meine Datenbank-Implementierung unabhängig?
Am im Forum: Datentechnologien

Zitat von Abt
Gerade die Architektur, die Du hier haben willst, ist darin gut dokumentiert und liefert Dir eigentlich alle Basics, die Du brauchst.
Auch dir vielen Dank! Es wird gewiss nicht langweilig übers Wochenende.

Thema: [Gelöst] Wie mache ich meine Datenbank-Implementierung unabhängig?
Am im Forum: Datentechnologien

Vielen Dank! Genau das richtige fürs Wochenende... :-( Es ist aber genau das, was ich suchte und nicht kannte.

Schönes Wochenende!

René

Thema: [Gelöst] Wie mache ich meine Datenbank-Implementierung unabhängig?
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQLBase 11.x und 12.x, MySQL>

Ich muss eine Anwendung primär für die oben angegebenen Versionen von SQLBase entwickeln. Dadurch stehen mit Technologien wie z. B. EF nicht zur Verfügung, denn EF steht erst mit der Version 12.3 zum ersten Mal zur Verfügung, wir jedoch ältere Versionen unterstützen müssen.

Nun stehen uns ODBC, OLEDB, ADO und .NET Data Provider zur Verfügung. Dazu habe ich ein paar Fragen:

Bisher habe ich in Verbindung mit dieser Datenbank lediglich den .NET Data Provider benutzt. Das funktioniert auch gut. Aber weil eventuell auch MySQL und vielleicht auch der SQLServer irgendwann benutzt werden sollten, frage ich mich, ob im Hinblick auf den Sourcecode nicht besser wäre, auf OLEDB oder ODBC zu setzen – wenn ich das richtig sehe, müsste ich im Idealfall lediglich die Verbindungszeichenkette ersetzen und ich könnte meine Anwendung mit einem anderen Datenbanksystem ausführen.

Beim .NET Data Provider ist zwar die Funktionalität mehr oder weniger normiert, die Methoden der einzelnen Datenbanksystemen heißen jedoch anders wie unten im Beispiel:

SQLBaseConnection con = new SQLBaseConnection();

MySqlConnection con = new MySqlConnection();

Das würde bedeuten, entweder bedingte Kompilierung, Source doppeln oder einen selbst entwickelten Wrapper nutzen (ich würde das wahrscheinlich so realisieren).

Wie sehen die Experten das? Vielleicht drehe ich mich wieder nur im Kreis und sehe den Wald vor lauter Bäumen nicht.

Vielen Dank und ein gutes Neues nachträglich!

Grüße

Thema: [Gelöst] Wie kann ich mit möglichst kurzer Syntax Items in einem Dictionary adressieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke! Das kann man auch so machen, aber notwendig ist das in diesem speziellen Fall wirklich nicht. Die Keys werden aus den Datenbankschemen einzelner Datenbanktabellen ermittelt, so wie die Values auch, die die restlichen Infos einzelner Datenbankfelder beinhalten. Diese Klassen (eine je Datenbanktabelle) werden komplett automatisch erstellt und es finden keine manuellen Änderungen statt.

Nochmals danke und viele Grüße!

Thema: [Gelöst] Wie kann ich mit möglichst kurzer Syntax Items in einem Dictionary adressieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Diese Klassen werden automatisch erstellt und nie von Hand geändert. Deshalb kann man gut mit dieser Unschönheit leben.

Thema: [Gelöst] Wie kann ich mit möglichst kurzer Syntax Items in einem Dictionary adressieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich habe alles umgesetzt und es funktioniert super. Darüber hinaus kann ich dank von Properties auf die Verwendung von "fld" verzichten. Hier das Ergebnis eines Testlaufs direkt. Nochmals herzlichen Dank!

namespace isential.DbTables
{
        public partial class DBARTIKEL
        {
                public string NUMMER                    => this.Fields["NUMMER"];
                public string NUMMER_2                  => this.Fields["NUMMER_2"];
                public string BEZEICHNUNG               => this.Fields["BEZEICHNUNG"];
                .
                .
                .
                public string ESUPDATEPRICETIME         => this.Fields["ESUPDATEPRICETIME"];
                public string ESUPDATEPRICE             => this.Fields["ESUPDATEPRICE"];

                public Dictionary<string, string> Fields = new Dictionary<string, string>()
                {
                        { "NUMMER",                     "Das ist NUMMER" },
                        { "NUMMER_2",                   "Das ist NUMMER_2" },
                        { "BEZEICHNUNG",                "Das ist BEZEICHNUNG" },
                        { "KURZBEZ",                    "Das ist KURZBEZ" },
                        .
                        .
                        .
                        { "ESUPDATEPRICETIME",          "Das ist ESUPDATEPRICETIME" },
                        { "ESUPDATEPRICE",              "Das ist ESUPDATEPRICE" }
                };
        }
}

Thema: [Gelöst] Wie kann ich mit möglichst kurzer Syntax Items in einem Dictionary adressieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von T-Virus
Im einfachsten Fall kannst du dir doch auch pro Item eine eigene Property in TestKlasse anlegen

Danke, das hilft mir weiter. Ich wusste/spürte es, dass es einfacher geht.

Diese Klassen (Mehrzahl) sind Ableitungen einer anderen Klasse, die den gemeinsamen Code beherbergt. Ich rede von "den Klassen", da es viele davon geben kann, zum Teil mit bis zu über 200 Dictionary-Einträgen. Sie werden auch nicht manuell codiert, sondern automatisch aus einer Datenbank. Somit ist es egal, ob der Code durch die vielen Properties länger wird.

Das mit der Überladung des Index-Operators hatte ich schon versucht, leider bin ich daran gescheitert – vielleicht der späten Stunde geschuldet.

@Th69
Ich kann fld nicht aus der Klasse herausoperieren, da, wie bereits geschrieben, es mehrere Klassen gibt, die alle ein "fld" haben und demnach unweigerlich zu Kollisionen kommen würde.

@chilic
Mein Minimalbeispiel enthält nur eine Adressierung. Stelle dir einen langen Ausdruck vor, in dem viele solche Adressierung beteiligt sind – das wird nicht gerade leserlich.

Wenn ich anstelle von

TestObjekt.Field[Testklasse.fld.item1]

die Adressierung

TestObjekt.item1

nutze, so ist der zweite Ausdruck m. E. um einiges einfacher zu lesen.

Ich schaue heute Nachmittag, ob der Vorschlag von T-Virus es sich realisieren lässt.

An euch dreien vielen Dank und ein schönes Wochenende!

Thema: [Gelöst] Wie kann ich mit möglichst kurzer Syntax Items in einem Dictionary adressieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo!

Ich traue mich fast nicht, die Frage zu stellen, denn irgendwie habe ich den Eindruck, die Antwort darauf ist einfach – ich komme aber nicht wirklich darauf.

Ich versuche, anhand eines kleinen und extrem vereinfachten Codeschnipsels, es zu erklären.

Ich habe in einer Klasse ein Dictionary, auf dessen Elemente ich sehr oft zugreifen muss. In diesem Beispiel sind Key und Value einfache Zeichenketten, während in der echten Anwendung Value ein Klassenobjekt ist.

Um keine Fehler bei der Eingabe zu machen, möchte ich Intellisense von Visual Studio nutzen. Deswegen die statische Klasse "fld", die die Keys beherbergt. Wenn ich dann irgendwo im Code "fld." eingebe, zeigt mir Visual Code die möglichen Werte zur Auswahl an.

Es funktioniert auch alles richtig, aber die Ausdrücke werden dadurch zum Teil unendlich lang. Hier ein sehr einfaches Beispiel:

Console.WriteLine(TestObjekt.Field[Testklasse.fld.item1]);

Hier bekomme ich, wie erwartet, "Das ist item1" als Ausgabe.

Nun die Frage: Wie kann ich die Klasse umstellen, damit ich möglichst direkt das gewünschte Element im Dictionary adressieren kann?

Für jeden Tipp vielen Dank im Voraus und ein schönes Wochenende!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test1
{
	class Program
	{
		static void Main(string[] args)
		{
			var TestObjekt = new Testklasse();

			Console.WriteLine(TestObjekt.Field[Testklasse.fld.item1]);

			Console.ReadKey();
		}
	}

	public class Testklasse
	{
		public static class fld
		{
			public const string item1 = "item1";
			public const string item2 = "item2";
			public const string item3 = "item3";
			public const string item4 = "item4";
		}

		public Dictionary<string, string> Field = new Dictionary<string, string>()
		{
			{ fld.item1, "Das ist item1" },
			{ fld.item2, "Das ist item2" },
			{ fld.item3, "Das ist item3" },
			{ fld.item4, "Das ist item4" }
		};

		public Testklasse()
		{

		}
	}
}

Thema: [gelöst] Infos über .NET 5: Änderungen bei der Interoperabilität (Bericht auf heise.de)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke! Das hilft mir weiter.

LG

Thema: [gelöst] Wie kann ich mit .NET 5 in einer Klassenbibliothek System.Windows.Forms verwenden?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke! Es hat funktioniert.

LG

Thema: [gelöst] Infos über .NET 5: Änderungen bei der Interoperabilität (Bericht auf heise.de)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

unter heise.de las ich u. a. folgende Passage:

Zitat
Eine fundamentale Neuerung in .NET 5.0 ist die Möglichkeit, dass Entwickler nun .NET-Code direkt aus anderen Programmiersprachen auf nativem C/C++-Weg aufrufen können, was die meisten Programmiersprachen beherrschen. Somit sind .NET- 5.0-Module nun fast in beliebige Sprachen einbindbar.

Ich habe gestern vergeblich versucht, mehr Infos darüber zu bekommen. Vielleicht habe ich die falschen Suchbegriffe verwendet. Daher meine kurze Frage: Weiß jemand, wo ich Infos darüber bekomme?

Vielen dank und ein schönes Wochenende!

Thema: [gelöst] Wie kann ich mit .NET 5 in einer Klassenbibliothek System.Windows.Forms verwenden?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo!

Wahrscheinlich eine doofe Frage, aber ich stehe auf dem Schlauch.

Ich wollte ein paar Tests mit dem neuen .NET machen. Dazu habe ich als Projektvorlage "Klassenbibliothek (.NET Core)" und im Projekt ".NET 5.0" ausgewählt. Ziel ist, eine einfache Test-DLL zu machen.

Nun wollte ich eine mit "MessageBox" etwas ausgeben – System.Windows.Forms finde ich aber nicht.

Dasselbe Projekt unter .NET Framework 4.8 lässt dagegen System.Windows.Forms problemlos als Verweis einbinden.

Ich dachte, .NET Core unterstützt auch Windows Forms und WPF. Wie es aussieht, nicht jedoch in einer Klassenbibliothek. Wahrscheinlich mache ich was falsch, daher meine Frage.

Schonmal vielen Dank und liebe Grüße!

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Zitat von Palladin007
By the way:

Angenommen, dieses Programm verfolgt ehrbare Absichten und soll das System wirklich sicherer machen, so stellt es aber automatisch auch ein Sicherheitsrisiko dar.

Das ist auch das Risiko bei den meisten Virenscannern: Viele Viren nutzen Lücken in Virenscannern aus und erreichen so gefährliche Rechte und Windows schützt sie genauso wie den Virenscanner.

Aus dem Grund würde ich dem Benutzer immer die Wahl lassen, ob er ein Programm entfernen möchte.

Es ist richtig. Das Programm wird jedoch im Unternehmensbereich eingesetzt und da hat der Benutzer keine administrativen Berechtigungen. Aber auch Admins sollten nicht so einfach das Programm beenden/deinstallieren können. Ob wir das schlussendlich so weit treiben, wird gerade evaluiert, denn das ist ein größerer Aufwand, der zwar zur Sicherheit beitragen kann, an der Funktionsweise des Programms jedoch nichts ändert – es muss sich auch monetär lohnen.

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Zitat von Stefan.Haegele
Und schon wurde wieder ein Täter zum Opfer gemacht - mit diesem Satz zeigt *du* uns allen, dass du keinen Deut reifer/besser bist!

Ich habe meine Reaktionen entfernt und gut ist. Ich hatte ein technisches Problem, welches ich mit eurer Hilfe zu lösen versuche. Grundlose persönliche Querschüsse müssen wirklich nicht sein – das hat mich auf die Palme gebracht.

Im Übrigen und nur als Info: Ich bat darum, die themenfremden Beiträge zu löschen, auch meine. Nun habe ich selbst meine gelöscht (Text).

Ich hoffe nun, wir kehren zum Thema zurück.

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Zitat von JimStark
Nur mal interessehalber, was wird das für ein Projekt? Ich verstehe nicht ganz wieso man Nutzer Adminrechte gibt aber sowas dann so stark kontrollieren will. Hört sich ehr nach so einem Schul-PC Schutzprogramm oder Mitarbeiterüberwachung an :D

Leider darf ich nicht viel erzählen. Es geht in erster Linie um eine Software, die Bereiche eines Datenträgers überwacht und protokolliert. Die Software gibt es schon in einer ersten Vorversion – sie sollte aber möglichst robust sein gegen Versuche, sie zu beenden – auch von einem Admin. Th69 hat mir einen guten Hinweis gegeben, wie man das angehen kann. Nun muss ich evaluieren, ob dieser Mehraufwand berechtigt ist.

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Danke! Habe es gerade durchgelesen und es ist das, wonach ich suchte. Allerdings muss ich jetzt nach der Zertifikatsverwaltung/-erstellung weiterforschen. Ein spannendes Thema und wie es sich darstellt, ein anspruchsvolles.

Aus dem Text:

Zitat
Updates and servicing

After the anti-malware service is launched as protected, other non-protected processes (and even admins) aren't able to stop the service. In the case of updates to the service binaries, the anti-malware service needs to receive a callback from the installer to stop itself so that it can be serviced. After the service is stopped, the anti-malware installer can perform upgrades and then follow the steps described above in the Registering the service and Starting the service as protected sections to register the certificate and start the service as protected.

Note that the service should ensure that only trusted callers can stop the service. Allowing untrusted callers to do so defeats the purpose of protecting the service.

Hinweis:

Hinweis auf Vorwürfe entfernt, um Thema nicht zu verwässern.


Lieben Dank für deinen Beitrag!

Schönen Sonntag!

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Zitat von Palladin007
Du kannst auf die Beendigung eines Prozesses warten.
Mach also einen Thread mit einer Endlosschleife auf, der auf die Beendigung des jeweils anderen Prozesses wartet und ihn dann erneut startet.

OK, ähnlich hätte ich das realisiert. Allerdings sollten sich beide Prozesse gegenseitig überwachen; denke ich. Nicht dass man erst den Überwachungsprozess killt...
Zitat von Palladin007
Und bei Windows ist der Benutzer König.
Wenn Du verhindern willst, dass man dein Programm killt, musst Du den Benutzer soweit einschränken, dass er nie in die Lage kommen kann, ihn zu killen.

Gut, das ist bei normalen Usern der Fall. Mit Administratoren sieht es anders aus. Aber das liegt in der Natur der Sache.
Zitat von Palladin007
Ich glaube nicht, dass Microsoft eine offizielle Möglichkeit einbauen, mit der man das Abschießen eines Prozesses verhindern kann, denn das könnte man genauso gut auch negativ nutzen. Das meine ich damit: Es würde an Malware grenzen.

Ja, da hast du Recht. Ich frage trotzdem, wenn ich das nicht weiß. Ich möchte mich nicht auf Vermutungen stützen.
Zitat von T-Virus
@MartinF
Mag zwar richtig sein, man sollte aber auch vernüftig diskutieren können.
Du hast dich Heute erst angemeldet, und haust schon solche Kommentare raus.
Keine Ahnung in welchem Forum du bisher aktiv warst, aber hier solltest du einen ordentlichen Umgang mit den Hilfesuchenden pflegen.

Wenn du nur Unterstellungen als Antworten liefern kannst, dann bist du hier definitiv an der falschen Adressen.

T-Virus

Danke! So kann man jegliche Diskussion zerstören – hier geht es aber um Technik, nicht nur für die Teilnehmenden sondern auch für die Mitlesenden. Wenn jemand dann das Thema verunreinigt, ist es für die Tonne.

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Hinweis:

Antwort auf Vorwürfe entfernt, um Thema nicht zu verwässern.

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Stefan, das eine schließt aber das andere nicht aus. Allerdings hat auch die gegenseitige Überwachung einen wunden Punkt, wie andere hier anmerken: Sofern man die notwendigen Rechte besitzt, kann man ein Programm schreiben, das beide Dienste gleichzeitig killt. Sicher gehört kriminelle Energie dazu und man kann nicht alles ausschließen, man sollte aber die Augen nicht verschließen und hoffen, dass es nie dazu kommen wird.

Die gegenseitige Überwachung nenne ich "Security by Obscurity", denn wenn jemand es geschafft hat, sich Administratorrechte zu verschaffen, um den einen Dienst zu killen, braucht er nicht viel, den anderen zu entdecken und ebenfalls zu killen – er muss nur erkennen, dass es einen weiteren Dienst gibt.

Wie würdet ihr die gegenseitige Überwachung implementieren?

Ich habe ein wenig gesucht (gegoogelt), ob es möglich ist, einen Kill programmtechnisch zu erkennen und sich da einzuklinken, bisher fand ich aber nichts. Auf der anderen Seite sendet jemand diese Anforderung an Windows und Windows wirft das Programm vom Speicher. Gäbe es vielleicht eine Möglichkeit, sich dazwischen zu legen bzw. irgend einen Handler bzw. ein Ereignis oder was auch immer zu abonnieren/abzufange, um das zu erkennen?

Darüber hinaus habe ich einen weiteren wunden Punkt bei Verwendung von dotnet core gefunden. Diesen möchte ich aber weiter analysieren, bevor ich ihn hier bekanntgebe.

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Es handelt sich um einen Überwachungsdienst, der nicht beendet werden darf. In so einem Fall ist es berechtigt, die Hürden möglichst groß zu machen, damit er nicht von jedem beendet werden kann. Ob das unschön ist oder es einem nicht gefällt, ist es zweitrangig. Das sind nun die umzusetzenden Anforderungen – ich kann sie nicht ändern.

Wie würdest du eine solche Anforderung programmiertechnisch erfüllen?

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Danke für die schnelle Antwort! Eine passende Autorisierung ist bereits im Entwurf vorgesehen. Der Dienst läuft in einem Kontext, der normale Anwender das Beenden nicht erlaubt.

Nun kann aber jemand (Anwender bzw. Programm) mit Administratorrechten das Programm killen – genauso kann auch der Überwachungsdienst gekillt werden.

Ich versuche, mich schlau zu machen, wie das Killen abläuft (z. B. vom Taskmanager aus). Ehrlich gesagt, habe ich keine Ahnung (nie gebraucht/benutzt), ob die Anwendung oder sonst wer benachrichtigt wird, das Windows gerade dabei ist, dich aus dem Speicher zu befördern.

Es wäre schön, wenn jemand, der bereits diese Anforderung hatte, darüber was erzählen würde.

Nochmals vielen Dank!

Thema: Dienst vor Beendigung schützen (Windows Worker Service unter dotnet core 3.1)
Am im Forum: Rund um die Programmierung

Hallo!

Ich hoffe, das hier ist das richtige Board für mein Anliegen.

Ich versuche mich an einem Dienst unter dotnet core 3.1 mit u. a. der Klasse BackgroundService. Man findet dazu genug Hilfe im Internet, so dass die Implementierung keine großen Probleme bereitet.

Nun brauche ich einen Denkanstoß für folgende Problemstellung: Der Dienst sollte möglichst resistent gegen Versuche, ihn gewaltig zu beenden. Das "normale" Beenden mittels sc.exe oder über den Dienststeuerungsmanager services.msc dürfte keine Probleme bereiten, denn das kann man leicht abfangen, um darauf zu reagieren.

Ich kenne das von z. B. Virenscannern, die ihre Prozesse mehr oder weniger gut schützen – da ist es schwer, diese mit normalen Mitteln abzuschießen. So was ähnliches würde ich gerne implementieren. Wenn der Dienst unter Windows läuft, könnte dieser in einem Kontext laufen, der ihn vor Bösewichten schützt. Da ich mich jedoch hier nicht wirklich auskenne, frage ich euch nach geeigneten Möglichkeiten, bevor ich unwissentlich einen falschen Ansatz wähle.

Schonmal lieben Dank und ein schönes Wochenende!