vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
process.kill im Netzwerk? 
Autor: manuelhasi
Datum: 09.01.19 23:01

Hallo nochmal...

ich habe da mal eine allgemeine Frage zum Updaten eines Programmes...

1) Wie kann ich eine .exe updaten, wenn der Prozess auf einem anderen Client des Netzwerkes geöffnet wurde und noch nicht geschlossen wurde... Sprich ich bräuchte doch sowas wie ein process.kill nur eben für alle Rechner im Netzwerk?

Beitrag wurde zuletzt am 09.01.19 um 23:02:29 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: effeff
Datum: 10.01.19 10:48

Du hast die Exe auf einem Netzlaufwerk liegen und Deine Nutzer starten das Programm von dort? Das ist ein Designfehler. Aus Sicherheitsgründen sollten Exe-Dateien nur aus den dafür vorgesehenen Verzeichnissen startbar sein - und das sind keine Netzlaufwerksverzeichnisse...

Eine einfache Lösung für Dein Anliegen sähe folgendermaßen aus (Unter der Voraussetzung, dass die Rechte so vergeben sind, dass Prozesse aus der Ferne beendet werden dürfen und dass der Nutzer, welcher dieses versucht, dieses auch darf!):

Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles _
  btnOK.Click
 
        Dim Rechnername As String = "DeinRechnername"
 
        Try
            If My.Computer.Network.Ping(Rechnername) Then
                ProzesseAuflisten(Rechnername)
            Else
                MessageBox.Show("Dieser Rechner ist im Netzwerk nicht" & _
                  "erreichbar!")
            End If
        Catch ex As Exception
            MessageBox.Show("Fehler")
        End Try
 
        Dim returnValue As Process()
 
        returnValue = Process.GetProcesses(Rechnername)
 
    End Sub
 
    Private Sub ProzesseAuflisten(ByVal Rechnername As String)
        Dim remoteByID As Process
        Dim returnValue As Process()
 
        returnValue = Process.GetProcesses(Rechnername)
 
        For Each p As Process In returnValue
            If p.ProcessName = "Prozessname" Then
                If ProzessNormalBeenden(Rechnername, p) = False Then
                    If ProzessBrutalBeenden(Rechnername, p) = False Then
                        MessageBox.Show("Der Prozess konnte nicht beendet" & _
                          "werden!", "Hinweis:")
                    End If
                End If
            End If
        Next
    End Sub
 
    Private Function ProzessNormalBeenden(ByVal Rechnername As String, p As _
      Process) As Boolean
        Try
            p.CloseMainWindow()
        Catch ex As Exception
            Return False
            Exit Function
        End Try
 
        Return True
 
    End Function
 
    Private Function ProzessBrutalBeenden(ByVal Rechnername As String, p As _
      Process) As Boolean
        Try
            p.Kill()
        Catch ex As Exception
            Return False
            Exit Function
        End Try
 
        Return True
 
    End Function

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: manuelhasi
Datum: 10.01.19 12:04

Hallo effeff..

Ja das stimmt, die .exe liegt auf einem Netzlaufwerk und die Benutzer starten von dort.

Wenn ich nochmal drüber nachdenke klingt es auch logisch, ein extra Verzeichnis dafür zu erstellen und die Rechte nur dafür zu setzten.. Könnte ja sonst ziemlich kompliziert werden...

Ich hatte die .exe der Einfachheit halber auf ein Netzlaufwerk gelegt, um nicht direkt Änderungen an der Netzwerkstruktur vornehmen zu müssen.

Danke für deine Info
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: effeff
Datum: 10.01.19 16:40

Aus Sicherheitsgründen sollte jeder Rechner so eingestellt werden, dass Programme nur aus den dafür vorgesehenen Verzeichnissen starten. Das ist für x86-Programme das Verzeichnis "c:\Programme (x86)" und für 64-Bit-Programme das Verzeichnis "c:\Programme". Und das ist nicht auf dem Server, sondern lokal auf den Clients.

Wieso musst Du denn Änderungen an der Netzwerkstruktur vornehmen, wenn Deine Nutzer ein Programm ausführen wollen?

EALA FREYA FRESENA

Beitrag wurde zuletzt am 10.01.19 um 16:41:02 editiert.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: manuelhasi
Datum: 10.01.19 18:02

Also wenn ich das richtig verstanden habe, dann gehört das Programm in c:\Programme" oder eben c:\Programme (x86) und die Datenbank, auf die zugegriffen wird aber auf den Server? Oder wie wird das Ganze sonst netzwerkfähig? Ich bin gerade ein wenig überfragt..
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: Manfred X
Datum: 11.01.19 09:00

Hallo!

Die Prozesse anderer User (auf anderen Rechnern) zu "killen"
ist eine absurde Idee (Datenverlust, User-Verwirrung, ...).

Wenn Du möchtest, daß die User für Dein installiertes Programm
ein Update durchführen, dann schicke Ihnen eine entsprechende
Benachrichtigung.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: effeff
Datum: 11.01.19 12:57

a) Wenn das Programm lokal installiert ist, kann es z. B. beim Starten prüfen, ob es ein Update gibt und dieses ggf. dann selbst installieren. Dann bist Du immer auf dem neuesten Stand. Das geht z. B. mit der ClickOnce-Distribution sehr einfach. Hierbei wird das Programm dann allerdings in einen Programmpfad des Users installiert.

b) Eine zentrale Datenbank gehört immer auf einen Server. Es sieht mir so aus, als hättest Du eventuell eine AccessDB laufen. Schau Dir mal die Möglichkeiten vom SQL Server Express an. Dieser ist kostenlos, kann trotzdem sehr viele Daten verwalten und ist viel perfomanter als eine AccessDB.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: manuelhasi
Datum: 11.01.19 18:57

Hey effeff..

auch das ist richtig, das Programm läuft mit einer AccessDB. Über den SQL Server hatte mir auch schon mal gedanken gemacht, aber aufgrund der wenigen Kenntnisse über SQL und der wenigen Daten, die z.Zt. noch anfallen, reichte bisher immer die AccessDB.. ginge das denn theoretisch auch mit einer einfachen AccessDB? Also die DB auf den Server legen?

Wie würdest du das denn machen in meinem Fall.. Veröffentlicht habe ich ein Programm bisher noch nicht auf diese Weise..
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: manuelhasi
Datum: 11.01.19 18:57

Hallo Manfred,

danke mal wieder für deine Antwort...
Also bin ich mit dem process.kill quasi auf dem Holzweg.. mmh.. Jetzt stellt mich mir gerade die Frage.. wie kann ich denn in einem Netzwerk eine Nachricht an die Benutzer des Programms schicken?
Also z.B. "Bitte Schließen Sie das Programm, damit ein Update ausgeführt werden kann!"..
Dazu muss ich doch die Adressen der einzelnen Rechner kennen?? Oder nicht?

Lieben Gruß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: Manfred X
Datum: 11.01.19 20:47

Hallo!

Eigentlich ist es Aufgabe der Nutzer, das Update
anzustoßen, wenn sich ihnen die Gelegenheit bietet.

Das Net-Framework bietet dafür auch integrierte Methoden,
auf die effeff bereits hingewiesen hat:
https://docs.microsoft.com/en-us/visualstudio/deployment/how-to-manage-updates-for-a-clickonce-application?view=vs-2017

Ein relativ einfacher Weg wäre es auch, eine Info-Datei zu
den Rechnern zu schicken - in das Anwendungsverzeichnis,
das durch Windows Deinem Programm zugeordnet ist.
Beim Start Deines Programms wäre im Code zu prüfen,
ob dort eine Benachrichtigungsdatei vorliegt und
diese ggf. dem Benutzer anzuzeigen.

Beitrag wurde zuletzt am 11.01.19 um 20:49:13 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: effeff
Datum: 12.01.19 11:28

//Ein relativ einfacher Weg wäre es auch, eine Info-Datei zu
den Rechnern zu schicken//

Da manuelhasis Programm mit einer Datenbank arbeitet, könnte auch schlicht dort einen Eintrag unterbringen. So mache ich es bei meinen Anwendungen. Ist in der Datenbank eine andere Versionsnummer angegeben, startet das Programm eben nicht voll durch, sondern beendet sich wieder und muss zwangsweise upgedatet werden...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: Manfred X
Datum: 12.01.19 12:42

Hallo!

Nicht jedes Update ist - aus Sicht des Users -
auch tatsächlich eine Verbesserung, insbesondere
wenn es dabei um die Umgestaltung der Benutzer-
oberfläche geht oder Änderungen in der Arbeitsweise
bestimmter Funktionen vorgenommen wurden.

Ein Zwangs-Update ist eigentlich nur angebracht, wenn
die Datengrundlage modifiziert worden ist (technische
bzw. sachliche Notwendigkeit) oder um eine erkannte
Sicherheitslücke im Programm zu schließen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: manuelhasi
Datum: 12.01.19 15:37

Hey ihr beiden,

genau hier habe ich ja eben auch mein Problem.. Natürlich weiß ich auch, dass ein Update nicht unbedingt für jeden User die bessere Variante ist. Aber was mache ich, falls sich doch mal was in der Anwendung ändert, beispielsweise eine Änderung an der DB selber was in der Benutzeroberfläche eine Änderung erzwingt.. Dann brauche ich eben doch dieses "Zwangsupdate" damit alle User auch weiterhin ordnungsgemäß mit der DB arbeiten können. Und genau in diesem Falle suche ich nach eine Lösung.

@ ManfredX
wenn es um Design-Änderungen der Anwendung geht, gebe ich die voll und Ganz Recht. Hier sollte jeder User entscheiden können, ob er das möchte oder nicht.

@ effeff
die Idee mit dem Eintrag in die DB finde ich prinzipiell interessant. Wie hast du es dann genau realisiert, dass das Update durchgeführt wird?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: process.kill im Netzwerk? 
Autor: sv00010
Datum: 13.01.19 14:39

manuelhasi schrieb:
Zitat:

Natürlich
weiß ich auch, dass ein Update nicht unbedingt für jeden User
die bessere Variante ist. Aber was mache ich, falls sich doch
mal was in der Anwendung ändert, beispielsweise eine Änderung
an der DB selber was in der Benutzeroberfläche eine Änderung
erzwingt.. Dann brauche ich eben doch dieses
"Zwangsupdate" damit alle User auch weiterhin
ordnungsgemäß mit der DB arbeiten können. Und genau in diesem
Falle suche ich nach eine Lösung.

Die Struktur der Veröffentlichung ändern.
Statt immer die Anwendung zu aktualisieren, einfach Unterordner mit Versionsnummern verwenden.
Dort dann das komplette aktualisierte Programm rein kopieren.

Beitrag wurde zuletzt am 13.01.19 um 14:40:09 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel