2009-07-27 11 views
3

Wenn eine .NET Assembly auf dem GAC bereitgestellt wird und die Zieldatei gesperrt ist, hält Windows es in dem, was ich am besten erraten kann, eine Art Assembly Purgatory - c:\windows\assembly\temp.Was passiert in 'Montage Fegefeuer'?

Mit Explorer-Prozess kann diese leicht gesehen werden, wenn für die Verdächtigen DLL Suche:

Process Explorer Search http://alexangas.com/blog/wp-content/uploads/2009/07/peasmlist.png

Sobald ich den Prozess zu beenden, die Datei Sperren (in diesem Fall OWSTIMER.EXE) es auf magische Weise entfaltet wird zum GAC richtig.

Ich bin gespannt, was Windows hier eigentlich macht. Woher weiß es, wann die Dateisperre freigegeben wurde? Wo hält es die Aufzeichnung von gesperrten Dateien? Gibt es jemals auf?

Antwort

1

Temp und tmp sind temporäre Ordner, die während der Installation und Deinstallation von GAC Assembly verwendet werden. Tmp wird für die Installation verwendet und Temp wird für die Deinstallation verwendet. Quelle: GAC Temp and Tmp

.NET Runtime Optimization Service (mscorsvw.exe) wird wahrscheinlich Dateien ab und zu Sondierung zu überprüfen, ob sie geschlossen sind, so kann es [un] bis zu Baugruppen installieren.

Ich kann falsch liegen, aber soweit ich weiß, gibt es keine WinAPI, die Sie darüber informieren würde, dass bestimmte Dateien geschlossen/entsperrt wurden. Sie müssen sie selbst überwachen. Aber Windows selbst muss eine solche Liste irgendwo im Speicher haben (zumindest hat es eine Liste von offenen Handles), so dass es nur weiß, dass die Datei geschlossen ist, weil das Handle, das die Datei darstellt, freigegeben wird.