Prog A schreibt Memorystream und Prog B Liest ihn

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von EaranMaleasi.

    Ihr seid doch die Programmiergötter, die mir auf eine einfache Frage, eine passende Antwort geben könnten.
    Ich, ich lerne das nur und als der Handwerker, der ich bin, frage ich halt die Wissenden.
    Gruss Alex

    areiland schrieb:

    also niemals ermitteln
    Das ist falsch!
    Du bekommst den Status, der beim Start des Programms vorliegt.
    ====
    Probiere es einfach aus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es gibt wohl Umgebungsvariablen, die in der Registry stehen, und daher verändert und diese Änderungen von allen Programmen gelesen werden können...
    Dann brauch man aber auch nicht den Umweg über Umgebungsvariablen gehen, sondern kann die Registry direkt zukleistern, was dann jedoch, genau genommen, wieder eine Datenbank wäre.

    areiland schrieb:

    Ihr seid doch die Programmiergötter, die mir auf eine einfache Frage, eine passende Antwort geben könnten.
    Das Problem ist, du hast keine Frage gestellt, sondern eine Behauptung aufgestellt, und diese Wehement verteidigt:

    areiland schrieb:

    Bitte klärt mich doch mal auf, warum das naheliegendste ausscheidet.

    areiland schrieb:

    Wie gesagt, ich möchte lediglich verstehen, warum diese für mich relativ simple Lösung nicht angezeigt ist.

    areiland schrieb:

    Glaube ich nicht!
    Das ist 3 mal nacheinander die Behauptung, dass es, so wie du sagst, funktioniert, jedoch ohne einen Beweis zu liefern. Daher hättest du eigentlich, wie @petaod und @RodFromGermany es gesagt haben, diesen Beweis liefern müssen, dass es funktioniert.

    EaranMaleasi schrieb:

    kann die Registry direkt zukleistern
    @areiland Das ist allerdings ein NoGo.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also ich kann in jedem beliebigen .NET Programm mit der Befehlszeile "Environment.SetEnvironmentVariable("Test", "1", EnvironmentVariableTarget.User)" direkt eine Variable setzen, die ich mit jedem Programm auch jederzeit wieder aus dem Userspace auslesen kann. Und wenn ich diese Variable ändere, lasse ich sie vom auswertenden Programm aus dem Userspace neu einlesen.
    Gruss Alex

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „areiland“ ()

    areiland schrieb:

    lasse ich sie vom auswertenden Programm aus dem Userspace neu einlesen.
    veranlasst wodurch?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    docs.microsoft.com/en-us/dotne…nvironmentVariableTarget_

    Microsoft Docs schrieb:

    The SetEnvironmentVariable(String, String, EnvironmentVariableTarget) method lets you define an environment variable that is available to the current process (the Process value). Environment variables that are unique to the current process environment block persist only until the process ends.

    In addition, on Windows systems only, the SetEnvironmentVariable(String, String, EnvironmentVariableTarget) method lets you define an environment variable that is available to all processes that run on a machine (the EnvironmentVariableTarget.Machine value) and to all processes run by a user (the EnvironmentVariableTarget.User value). Per-machine and per-user environment variables are copied into the environment block of the current process.

    On .NET Core on macOS and Linux systems, calls to the SetEnvironmentVariable(String, String, EnvironmentVariableTarget) method with a value of EnvironmentVariableTarget.Machine or EnvironmentVariableTarget.User are ignored.

    Nach weiterer Recherche zeigt sich, dass @areiland zwar durchaus recht hat, man kann wohl als Target Machine und User auswählen, und andere Prozesse sollten in der Lage sein, diese Variable zu lesen, jedoch behilft sich Windows hier mit der Registry. "Echte" Umgebungsvariablen sind tatsächlich pro Prozess definiert, und von außen nicht änderbar. Betrifft zwar so gut wie niemanden hier, aber auf MacOS und Linux würden Aufrufe mit den Targets Machine und User einfach ignoriert werden.

    Fraglich ist jedoch, ob es der vagen Anforderung von @XBrainBug entspricht:

    XBrainBug schrieb:

    Informationen zwischen 2 Progs austauschen.
    Kann man darüber erledigen, jedoch hat er auch das hier geschrieben:

    XBrainBug schrieb:

    Aber in Zukunft könnte da noch mehr kommen.
    Grund genug sich mit Etwas auseinanderzusetzen, dass es erlaubt dieses "Mehr" auch ordentlich zu bewältigen, anstatt die Registry ständig zu malträtieren

    Und das ist mein Grund, die Umgebungsvariablen, in so einem Fall, nicht vorzuschlagen.