vllt hat ja jemand schon Erfahrungen damit sammeln können! Ich brauch mal wieder eure Hilfe, Denkanstöße und Ratschläge.
Mich nervt es momentan ganz schön, wenn ich Versionen von Programmen austauschen möchte und diese in Benutzung sind, ich dann den Weg in der Firma suchen muss, um herauszufinden wer das gerade nutzt.
Gibt es eine Möglichkeit sich auslesen zu lassen wer alles das Programm nutzt? Aus dem Netzwerk heraus?
Hast Du nun das Problem, dass du Dateien nicht austauschen kannst, weil diese gerade in Verwendung sind oder dass Du nicht weißt, wer welche Version installiert hat?
Gibt es eine Möglichkeit sich auslesen zu lassen wer alles das Programm nutzt? Aus dem Netzwerk heraus?
Habt ihr etwa die Software selber im Netz liegen und die Leute starten die Software von da?
Das bedeutet eher das Ihr/Du die Sache komplett falsch aufgezogen habt, das sollte man niemals machen.
Ich will die nicht auf Krampf schließen. Am liebsten würde ich mir gerne auslesen lassen von allen Computern ob das Programm geöffnet ist, das würde mir persönlich reichen.
Der nächste Schritt wäre dann den Prozess auf Krampf zu schließen.
Ich goggle nebenbei ja auch, konnte leider noch nichts finden, was mir weiterhilft.
Welche PC's gerade Aktiv sind soll man sich wohl aufjedenfall auslesen lassen können.
ich mache das genauso. Wenn das Programm gestartet ist ist die Exe-Datei seit Windows 7 in Benutzung, kann also nicht geändert oder überschrieben werden.
In meinem Programm schreibe ich einen Datensatz bei Programmstart mit IP-Nummer, Usernamen und Computernamen. Bei Programmende lösche ich das. So kann man sich immer eine Liste ausgeben lassen wer gerade das Programm benutzt.
Wenn das Programm allerdings beim Start abstürzt ist die Exe manchmal blockiert ohne dass ein Datensatz angelegt wurde. Dann muss man in der Liste der Prozesse suchen oder den Arbeitsplatz-Rechner neu starten.
Klingt nach einer Datenbank Lösung? Ich hab mir bereits auch schon eine aufgemalt, aber gibt es keine andere Möglichkeit, kann man sich das ganze nicht Codeseitig auslesen lassen?
Wie FZelle schon sagte - und das sehe ich auch so - ist die Sache hier falsch aufgezogen worden.
So sollte man keine Software verteilen, vor allem nicht in Unternehmen.
Zitat von _Cashisclay
kann man sich das ganze nicht Codeseitig auslesen lassen?
Nein, es gibt hier keine magische Glaskugel, die das kann ;-)
Ich freue mich über jede Antwort. Fakt ist aber ihr umgeht immer die Fragestellung, mag sein dass das ganze eventuell falsch aufgezogen wurde, ich find das ganze nicht schlimm. Es ist eine .exe von einem geschriebenen Programm was in einem bestimmten Ordner liegt worauf die jeweilige Abteilung zugreifen kann. Meiner Meinung nach legitim.
Wenn ich die Version ändere, ändere ich sie für alle.
Aber kaum jemand antwortet auf meine Frage, sondern sagt mir wie auch in anderen Themen wo ich eine Frage stelle, warum macht ihr das so. Ist doch falsch.
Ändert aber nichts an meinem Problem, bzw an dem was ich vor habe.
Grüße
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von _Cashisclay am .
Aber wenn jemand bei 1+1 auf 3 kommt, dann ist doch das Problem, das der Rechenweg falsch ist. Da hilft es doch nur, wenn man demjenigen aufzeigt, was die korrekt Lösung ist und wie der Weg dahin ist. Oder?
Ansonsten ist eine Möglichkeit eben genau das was Bernd geschrieben hat. Das muss keine Datenbank sein.
Genauso könnte dort nur eine Textfile liege, welche die aktuell gültige Versionsnummer enthält. Deine Applikation kann dann nur gestartet werden, wenn diese mit der der Anwendung übereinstimmt. Dann würdest Du eben keine weiteren Starts zulassen. Irgendwann sind dann deine Dateien vielleicht nicht mehr im Zugriff.
Oder aber du erzeugst eine Ordnerstruktur in dem die Versionen liegen. Der Aufruf erfolgt über ein Shortcut, welches Du anpasst, wenn es eine neue Version gibt.
Dennoch schließe ich mich hier FZelle und Abt an, dass das direkte Ausführen von Software auf dem Netzlaufwerk ein No-Go ist.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von t0ms3n am .
Du kannst beim Start einfach eine Textdatei direkt in das Verzeichnis schreiben, wo das Programm abgelegt ist. Die Datei bekommt den Computername als Dateiname und ist leer (oder du kannst gerne Username darein schreiben). Beim Beenden wird die Datei gelöscht. Somit siehst du im Verzeichnis, ob das Programm in Benutzung ist und durch wen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von vbprogger am .
Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.
--------- Bemerkung: ich beantworte keine Fragen via PM, denn das Forum soll ja was davon haben!
Schreibrechte im Programmverzeichnis sollten nicht sein.
Aber ich habe z.B. ein Verzeichnis für Log-Dateien. Oder man legt ein Verzeichnis \User mit Schreibberechtigung an, in das man bei Programmstart eine Datei anlegt und bei Programmende wieder löscht. Wird ein Programm auf einem Rechner zweimal gestartet sollten auch 2 Dateien angelegt werden.
Also das auslesen der Prozesse von einem Computer im Netzwerk scheint also so einfach nicht möglich zu sein, weil ihr ja alle die eine Methode vorschlagt, die mit Sicherheit auch funktionieren würde und plausibel klingt, danke dafür.
Eine Frage hätte ich noch, wie sollte man es denn anders angehen? Der andere Weg wäre doch, jedem Benutzer das Programm auf seinem Rechner zur Verfügung zu stellen, es wird also nicht mehr via Verknüpfung auf den jeweiligen Ordner im Firmennetzwerk gestartet, sondern nur noch vom eigenen PC aus.
Wenn ich jetzt Änderungen mache und wenn es nur schnelles Bug Fix ist, muss ich doch trotzdem jedem einzelnen die neue Version zu kommen lassen, wo dieser die dann überschreiben muss.
Ich seh kein Vorteil darin. So tausch ich die Datei auf dem Netzwerk aus und alle Verknüpfungen greifen dann auf die neue Version zu.
PS : ich wollte hier niemanden dumm anmachen oder so ich bin sehr dankbar für eure Vorschläge und versteh auch den Sinn das man das Problem an der Wurzel packen sollte, aber es ist nicht meine Aufgabe aktuell die komplette Struktur für alles ändern zu lassen bzw. war das anfangs ja auch nicht meine Frage :o
Grüße
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von _Cashisclay am .
Wie wäre es alternativ mit einem Starter, der erst alle Dateien auf die Festplatte kopiert (beim ersten Mal alle, danach nur die, die neuer als die lokale Kopie sind) und dann von dort aus startet? So würden die Updates "ausgeliefert" und die Dateien nicht die ganze Zeit blockiert.
_Cashisclay bitte hör mit den Full-Quotes auf.
Keine Lust dauernd Deine Beiträge editieren zu müssen. Ansonsten pass ich persönlich den Forencode für Dein User an, dass Du keinen "Zitieren"-Button mehr hast! :evil: [Hinweis] Wie poste ich richtig? 2.3
Inhaltlich umgeht niemand die Frage, sondern Du hörst einfach nicht das, was Du hören willst.
Vermutlich weil Du nicht einsehen willst, dass der "Weg" einfach ned so dolle ist, den Du gewählt hast. Mit den Konsequenzen musste nun leben oder Du überlegst Dir eben einen Weg, der die Nachteile nicht hat (dies ist empfohlen).
Gibt es eine Möglichkeit sich auslesen zu lassen wer alles das Programm nutzt? Aus dem Netzwerk heraus?
Mit PowerShell und dem Cmdlet Get-Process kannst Du alle laufenden Prozesse auch per remote abrufen.
Die Liste pro Rechner z.B. nach der Eigenschaft Path filten.
Vielleicht bin ich da etwas altmodisch. Ich sehe auch keinen Nachteil das Programm auf dem Netzwerklaufwerk zu starten. Außer dass alle Benutzer das Programm verlassen müssen wenn eine neue Version kopiert wird.
Pinki : Das machen wir bei einem VPN mit langsamer Verbindung so (Starter, der neuere Dateien auf das lokale Laufwerk kopiert und dort startet). Hat im Netzwerk aber keinerlei Vorteile, eher Nachteile.
- Ein Netzlaufwerk gilt per default unter .NET als unsichere Quelle - nicht zu unrecht (Code Access Security). Wurde aber mit neueren .NET Versionen abgeschwächt.
- Die Applikation kann nur gestartet werden, wenn man Zugriff auf die Netzwerkshare hat sowie, dass sie in diesem Moment online ist; obwohl man evtl. ansonsten gar nichts vom Netzwerk benötigt
- Die Update Problematik siehe hier
Es gibt absolut keine Rechtfertigung (meine Meinung) gegen ClickOnce, wenn man aktuell mit einem Netzwerkshare arbeitet.
Ich finde sowas als "Softwareverteilung" zu bezeichnen wäre eine Beleidigung für jede andere Methodik ;-)
Click Once kann nicht eingesetzt werden, denn da müssen ja alle Anwender selber ihre Software aktualisieren. Was passiert wenn die Anwender die Software nicht aktualisieren ?
Welchen Vorteile hat Clickonce gegenüber xcopy ?
Das Netzwerklaufwerk ist bei uns genauso sicher wie das lokale Laufwerk.
Wenn man kein Zugriff auf das Netzwerklaufwerk bzw. auf das Netzwerk hat kann eh nicht gearbeitet werden. Jedenfalls bei unseren Anwendern.
Ich finde jede Methode hat Vor- und Nachteile, man sollte immer die beste verfügbare Methode für den jeweiligen Fall benutzen.
ClickOnce aktualisiert automatisch die Software. Bei jedem Start der Anwendung.
So verteilt auch MS selbst einige Applikationen, zB das IoT Dashboard, NuGet GUI etc etc...
Probier mal ClickOnce aus, dann siehste, dass es mit xcopy relativ wenig zutun hat :-)
Deine Applikation funktioniert nicht, wenn das Netzwerk nicht verfügbar ist. Aber was ist, wenn nur das Share down ist (warum auch immer, zB Policy Error) aber das Netzwerk prinzipiell da?
Lokal gibts nichts bei Deiner Variante. Mit ClickOnce könnte trotzdem gearbeitet werden.
Sorry, gerade bei Unternehmen ist das Starten von Applikationen von Netzlaufwerken in meinen Augen absolut fahrlässig.
Zuhause mach ichs auch, zB Portable Apps von der NAS starten. Aber hier gibt es die Negativszenarien auch gar nicht.
Zitat
Das Netzwerklaufwerk ist bei uns genauso sicher wie das lokale Laufwerk.
Sorry, das ist eine sehr zweifelhafte Über/Einschätzung in meinen Augen. Vor allem zusammen mit dem Wort "Sicher", das verschieden ausgelegt werden kann.
Und nur weil das bei euch so sein sollte finde ich es sehr fraglich anderen diese Methodik zu empfehlen, wenn man die negativen Auswirkungen und Risiken dieser sehr sehr unsicheren "Verteilung" nicht beleuchtet.
Hallo Community,
Gibt es eine Möglichkeit sich auslesen zu lassen wer alles das Programm nutzt? Aus dem Netzwerk heraus?
Falls das Programm auf einem Windowsserver liegt kannst Du (oder ein Admin) das einfach auf dem Server direkt nachschauen:
Per RDP auf den Server verbinden -> Systemsteuerung -> Verwaltung -> Computerverwaltung -> Computerverwaltung -> System -> Freigegebene Ordner -> Geöffnete Dateien
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von hypersurf am .
ich habe mir einen zentralen Admin-Server geschrieben, welcher u.a. für die zentrale Speicherung der Konfiguration, für Updates, Lizensierung, ... geeignet ist.
Die Clients suchen sich per Broadcast beim Start den Admin-Server und halten i.d. Regel die Verbindung bis zur Beendigung des Programms.
Sobald das Programm beendet wird (oder abstürzt), wird ja auch die Verbindung zum Server getrennt.
Ich kann somit zu jeder Zeit feststellen, welche Anwendung wann wo läuft.
Um klein anzufangen: Beim Start einen Background-Thread starten, welcher per Broadcast einen Server sucht, sich gegen diesen verbindet, seine Daten sendet (wer bin ich, ...) und die Verbindung offen hält.
Erweitert kann der Thread dann noch regelmäßig Nachrichten senden (z.B. einmal pro Minute), quasi als Lebenszeichen (heartbeat). Bleibt die Meldung längere Zeit am Server aus, kann dieser annehmen, dass das Programm nicht mehr läuft bzw. hängt, und die Verbindung selbst abbauen.
Das wollte ich gestern ich auch erst vorschlagen!
Vielleicht rechtfertigt der Aufwand den Nutzen bei diesem Prozess ja nicht, ich hab ja keine Ahnung was das Programm macht aber schön fände ich sowas natürlich schon
Denn ich könnte mit vorstellen, dass du dann auch das hier:
Zitat von _Cashisclay
Ich will die nicht auf Krampf schließen. Am liebsten würde ich mir gerne auslesen lassen von allen Computern ob das Programm geöffnet ist, das würde mir persönlich reichen.
Der nächste Schritt wäre dann den Prozess auf Krampf zu schließen.
elegeant umschiffen kannst.
Beziehungsweise den Nutzer halt mit einer MessageBox + Countdown vorwarnen kannst (oder so) bevor du dann mit der Keule kommst, er / sie könnte dann noch seine Daten speichern (oder so) 8)
Obwohl wenn ich näher drüber nachdenke. Vielleicht kann das der Windows Server 2008 R2 sowas auch schon von Haus aus.
Sowas ist doch im Einsatz oder? Diese Frage von Jamikus hast du ja noch nicht beantwortet
Netter Vorschlag, das Ding ist, ich hätte nicht gedacht dass das ganze so komplex wird, ich dachte schon das ich mir alle Computer im Netzwerk auslesen lassen kann und darüber irgendwie auf den ihre Prozesse, aber scheint ja so in der Form nicht möglich zu sein.
Zu deiner Frage mit dem Windows Server die hab ich deswegen nicht beantwortet, weil ich keine Ahnung habe und allgemein dahingehend nicht sehr gut bewandert bin und mich nicht zum Plepo machen wollte X(
Davon abgesehen, dass der Offtopic anfängt, den ich nun entfernt habe, hast Du eigentlich bereits potenzielle Lösungsmöglichkeiten bekommen.
Wir fangen uns an hier im Kreis zu drehen; vermutlich, weil Du die potenziellen Lösungsmöglichkeiten nicht das sind, was Du Dir vorstellst oder eben nicht willst.
Meine IT Admins würden mir was auf den Deckel geben, wenn ich tatsächlich erwarten sollte, dass die mir "ständig" Auskunft über die User geben.
Sowas erzeugt genau die Arbeit in einer IT, die die Admins nicht wollen - und würde da meiner Ansicht nach völlig berechtigt auf die Barrikaden gehen.
Und ClickOnce ist immer noch auf dem Stand, dass es alle hier genannten Requirements abdeckt.
Vermutlich hast es Dir nichmal angeschaut...
Dreht sich das Thema weiter im Kreis oder fängt das mit dem Offtopic nun wieder an, werd ichs halt schließen müssen.
Logischerweise sind die Lösungsansätze nicht das was ich mir in erster Linie vorgestellt habe, hatte ich aber bereits mehrmals erwähnt, das ich vermutet habe, dass das ganze ein wenig leichter ist.
Mir gibt niemand ständig Auskunft über die User, ich sehe dass das Programm benutzt wird, wenn ich es austauschen möchte und wenn das nicht geht mach ich es halt zu einem späteren Zeitpunkt.
Ich habe mich belesen über ClickOnce, ich habe gegoogled und einen Blick drüber geworfen, finde die Unterstellung an dieser Stelle einfach unangebracht, das Problem dabei ist, das es nicht meine Aufgabe ist, mit ClickOnce unsere gesamte Struktur über den Haufen zu werfen, das einzige was ich machen kann, ist vorzuschlagen, das sich der zuständige dafür das ganze mal ansehen könnte.
Und eine Lösungsansatz vorzuschlagen und sich auf ClickOnce zu verkrampfen halte ich für genau so falsch, es sind nun mal die gegebenen Möglichkeiten vorhanden, damit muss man arbeiten und versuchen so eine Lösung zu schaffen, wo ja auch schon viele gute Vorschläge kamen, das darf man auch nicht vergessen.
Wenn du aber den Leuten die eventuell nicht jeden Tag ins Forum gucken, das Recht verwehren möchtest ihr Wissen in dem Thread mit uns zu teilen, dann schließ das Ding halt.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von _Cashisclay am .