Windows-Clients, die eine zwischengespeicherte Kopie von .Net 4.0 exe ​​verwenden, die sich auf einem Netzwerkfreigabe-Laufwerk befindet

1918
Kishore A

Wir haben eine ausführbare .NET 4.0-Datei ( MyProg.exe ) und zugeordnete DLLs, die auf einer Netzwerkfreigabe mithilfe von XCopy bereitgestellt werden. MyProg.exe und seine DLLs sind alle nicht signiert.

Wir haben sie auf der Netzwerkfreigabe installiert, sodass mehrere Benutzer dieselbe Version des Programms verwenden können und die Aktualisierung des Programms erleichtern. Für viele unserer Kunden hat dies seit vielen Jahren gut funktioniert.

Für einen neuen Kunden wird ein Ordner auf der Windows Server 2012 Virtual Machine als Netzwerkordner freigegeben. Benutzer führen das Programm von einem anderen Terminalserver aus (Windows Server 2012).

Wenn wir MyProg.exe (auf Version 2.0 von 1.0) aktualisiert haben, führt der Terminalserver die neue ausführbare Datei nicht aus, bis sie neu gestartet wird. Es wird weiterhin Version 1.0 geladen, obwohl das Exe nicht mehr verfügbar ist. Es scheint, eine zwischengespeicherte Version von MyProg.exe V1.0 auszuführen .

  1. Die Schritte, die ich ausprobiert habe:
    1. Schließen Sie alle Instanzen des Programms
    2. Kopieren Sie die neue Datei MyProg.exe in den Ordner und überschreiben Sie die Dateien (aktualisierte Exe-Version von 1.0 auf 2.0).
    3. Überprüfen Sie die Version 2.0 von MyProg.exe auf der Seite Eigenschaften >> Details des Dateiservers und des Terminalservers
    4. Stellen Sie sicher, dass MyProg.exe V2.0 ausgeführt wird, wenn es vom Dateiserver unter Verwendung der Verknüpfungsdatei ausgeführt wird (Ziel: \\ Server \ MyProg \ MyProg.exe ).
    5. Führen Sie die gleiche Verknüpfungsdatei (Ziel: \\ Server \ myprog \ myprog.exe ) von Terminalserver und myprog.exe V1.0 beginnt
    6. Benennen Sie \\ Server \ MyProg in \\ Server \ MyProg1 um und vergewissern Sie sich, dass der Terminalserver die Verknüpfung nicht ausführen kann, da der Ordner nicht mehr vorhanden ist.
    7. Erstellen Sie eine neue Verknüpfungsdatei (Traget: \\ Server \ MyProg1 \ MyProg.exe ), und vergewissern Sie sich, dass MyProg.exe V2.0 auf dem Client ausgeführt wird
    8. Benennen Sie den Ordner \\ Server \ MyProg1 wieder in \\ Server \ MyProg um. Wenn Sie die ursprüngliche Verknüpfungsdatei ausführen, wird MyProg.exe V1.0 weiterhin geladen, bis der Terminalserver neu gestartet wird.
    9. Ich habe überprüft, dass Offlinedateien auf dem Terminalserver deaktiviert sind
    10. Ich habe bestätigt, dass ich die ausführbare Datei MyProg.exe nicht überschreiben kann, wenn das Programm auf einem Terminalserver ausgeführt wird.

Was kann ich noch prüfen, um zu ermitteln, warum eine ältere Version der ausführbaren Datei ausgeführt wird, obwohl diese Datei nicht mehr vorhanden ist?

1
Ihre Annahme über einen Cache wäre nicht korrekt. Es gibt keinen Mechanismus in Windows, der eine solche Datei zwischenspeichern würde. Ramhound vor 10 Jahren 0

1 Antwort auf die Frage

0
Kishore A

Wenden Sie sich an den technischen Support von Microsoft. Sie erwähnten, dass dies durch diese Einstellungen für SMB verursacht werden könnte. Wir haben diese Einstellungen geändert und werden beim nächsten Update einen Fehler machen.

http://technet.microsoft.com/de-de/library/ff686200(v=WS.10).aspx

Die Einstellungen des obigen Links haben nicht funktioniert.
Weitere Details, die uns bei der Lösung des Problems geholfen haben: Client-Computer ist ein Windows-Terminalserver

Dieser Knowledge Base-Artikel enthält weitere Informationen hierzu:
https://support.microsoft.com/kb/2536487

Anwendungen stürzen ab oder reagieren nicht mehr, wenn sich ein anderer Benutzer von der Remotedesktopsitzung in Windows Server 2008 oder Windows Server 2008 R2 abmeldet

Symptome:

Wenn Sie eine Anwendung von einem zugeordneten Laufwerk ausführen, reagiert die Anwendung möglicherweise nicht mehr oder stürzt für einen Benutzer (oder mehrere Benutzer) ab, wenn sich ein anderer Benutzer abmeldet. Zum Beispiel:

  1. Ein Server ist ein Dateiserver und ein anderer ist ein Remote Session Host-Server (Terminalserver).
  2. Ein Ordner auf dem Dateiserver wird für Remotebenutzer zugeordnet, die eine Verbindung zum RDS-Server herstellen.
  3. Eine Anwendung auf der zugeordneten Freigabe wird von mehreren Benutzern gestartet.
  4. Ein Benutzer meldet sich ab. Dies führt dazu, dass bei den anderen Benutzern der Anwendung ein Anwendungsabsturz oder eine Nichtreaktion auftritt.

Das Verhalten tritt insbesondere dann auf, wenn sich der erste oder der letzte Benutzer der Anwendung je nach Version abmeldet. Bei Windows Server 2008 tritt dieses Problem auf, wenn sich der erste Benutzer abmeldet. Windows Server 2008 R2 tritt dieses Problem auf, wenn sich der letzte Benutzer abmeldet.

Ursache:

Dies geschieht aufgrund der Art und Weise, in der der Redirector den FCB (File Control Block) für die betreffende Binärdatei verarbeitet. In Windows Server 2008 gehört der FCB dem Benutzer, der die Datei zum ersten Mal geöffnet hat, und dieser FCB wird von nachfolgenden Benutzern verwendet. Wenn sich der erste Benutzer abmeldet, ist der FCB verwaist, was dazu führte, dass die folgenden Benutzer der Anwendung abstürzten oder nicht mehr reagierten. In Windows Server 2008 R2 gehört der FCB dem letzten Benutzer, der die Datei geöffnet hat, und bei früheren Benutzern tritt das Problem auf, wenn sich der letzte Benutzer abmeldet

Problemumgehung:

Installieren Sie die Anwendung lokal auf dem Terminalserver und nicht auf einer Netzwerkfreigabe

Ich habe das gleiche Problem, wie lösen Sie es? Alejandro-2988924 vor 7 Jahren 0
@ Alejandro-2988924 Ich musste das Programm lokal installieren. Ich habe keine Lösung gefunden. Die lokale Installation des Programms war die offizielle Empfehlung von Microsoft. Kishore A vor 7 Jahren 1