Windows-Clients, die eine zwischengespeicherte Kopie der .Net 4.0-EXE verwenden, die sich auf einem freigegebenen Netzwerklaufwerk befindet

Windows-Clients, die eine zwischengespeicherte Kopie der .Net 4.0-EXE verwenden, die sich auf einem freigegebenen Netzwerklaufwerk befindet

Wir haben eine ausführbare .Net 4.0-Datei (MyProg.exe) und zugehörige DLLs, die mit XCopy auf einer Netzwerkfreigabe bereitgestellt werden. MyProg.exe und seine DLLs sind alle unsigniert.

Wir haben sie auf der Netzwerkfreigabe installiert, damit mehrere Benutzer dieselbe Programmversion verwenden können und das Programm einfacher aktualisiert werden kann. Dies hat für viele unserer Kunden seit vielen Jahren gut funktioniert.

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

Als wir dieMyProg.exe(von 1.0 auf Version 2.0) führt der Terminalserver die neue ausführbare Datei erst nach einem Neustart aus. Er lädt weiterhin Version 1.0, obwohl diese EXE nicht mehr verfügbar ist. Es scheint, als würde er eine zwischengespeicherte Version vonMyProg.exe V1.0.

  1. Die Schritte, die ich versucht habe:
    1. Schließen Sie alle Instanzen des Programms
    2. Kopieren Sie die neueMyProg.exein den Ordner und überschreibe die Dateien (Aktualisierte EXE-Version von 1.0 auf 2.0)
    3. Überprüfen Sie die Version 2.0 desMyProg.exevon der Seite „Eigenschaften >> Details“ sowohl vom Dateiserver als auch vom Terminalserver
    4. Überprüfen Sie, ob dieMyProg.exe V2.0läuft, wenn es vom Dateiserver unter Verwendung einer Verknüpfungsdatei ausgeführt wird (Ziel:\\Server\MyProg\MyProg.exe)
    5. Führen Sie die gleiche Verknüpfungsdatei aus (Ziel:\\Server\MyProg\MyProg.exe) vom Terminalserver undMyProg.exe V1.0beginnt
    6. Umbenennen\\Server\MyProgZu\\Server\MeinProg1und bestätigen Sie, dass der Terminalserver die Verknüpfung nicht ausführen kann, da dieser Ordner nicht mehr vorhanden ist.
    7. Erstellen Sie eine neue Verknüpfungsdatei (Ziel:\\Server\MyProg1\MyProg.exe) und bestätigen Sie, dassMyProg.exe V2.0läuft auf dem Client
    8. Benennen Sie den Ordner um\\Server\MyProg1zurück zu\\Server\MyProgund die Ausführung der ursprünglichen Verknüpfungsdatei wird weiterhin geladenMyProg.exe V1.0bis der Terminalserver neu gestartet wird.
    9. Ich habe überprüft, dass Offlinedateien auf dem Terminalserver deaktiviert sind
    10. Ich habe überprüft, dass ich die ausführbare Datei MyProg.exe nicht überschreiben kann, wenn das Programm auf dem Terminalserver ausgeführt wird.

Was kann ich sonst noch überprüfen, um das Problem zu beheben, warum eine ältere Version der ausführbaren Datei ausgeführt wird, obwohl die Datei nicht mehr vorhanden ist?

Antwort1

Habe den technischen Support von Microsoft kontaktiert. Sie haben erwähnt, dass es an diesen Einstellungen für SMB liegen könnte. Wir haben diese Einstellungen geändert und werden beim nächsten Update darauf achten.

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

Die Einstellungen aus dem obigen Link funktionierten nicht.
Weitere Details, die uns geholfen haben, das Problem herauszufinden:Der Clientcomputer ist ein Windows-Terminalserver

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

Anwendungen können abstürzen oder nicht mehr reagieren, wenn sich ein anderer Benutzer von der Remotedesktopsitzung in Windows Server 2008 oder Windows Server 2008 R2 abmeldet

Symptome:

Beim Ausführen einer Anwendung von einem zugeordneten Laufwerk kann es passieren, dass die Anwendung für einen (oder mehrere) Benutzer nicht mehr reagiert oder abstürzt, wenn sich ein anderer Benutzer abmeldet. 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 die Verwendung durch Remotebenutzer zugeordnet, die eine Verbindung mit dem RDS-Server herstellen.
  3. Eine Anwendung auf der zugeordneten Freigabe wird von mehreren Benutzern gestartet.
  4. Ein Benutzer meldet sich ab, was bei den anderen Benutzern der Anwendung zu einem Absturz oder einer Nichtreaktion der Anwendung führt.

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

Ursache:

Dies liegt an der Art und Weise, wie 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 zuerst geöffnet hat, und dieser FCB wird von nachfolgenden Benutzern verwendet. Wenn sich der erste Benutzer abmeldet, wird der FCB verwaist, was dazu führt, dass die Anwendung bei nachfolgenden Benutzern abstürzt oder nicht mehr reagiert. 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 statt auf einer Netzwerkfreigabe

verwandte Informationen