Windows 7 kullanmaya başladığımdan beri bu sorun beni rahatsız ediyor. Zaman zaman benzer forumlarda karşımıza çıkan benzer sorular görüyorum, ama asla bir cevap görmedim. İşte neredeyse her zaman yeniden üreten iki senaryo:
Kaşif Yolu
- Explorer ile en az bir exe dosyası içeren bir dizine gidin
- Hemen bir dizin yukarı git
- Şu adrese gittiğiniz dizini silin:
- Verim Klasör erişim engellendi belirten diyalog Sen bu klasöre değişiklik yapma Yöneticiler izni alınması gerekiyor bu eylemi gerçekleştirmek için izne ihtiyacınız düğmeleri ile, Yine denemek ve İptal
- Tekrar Dene'ye basmak asla hemen çalışmaz . Bir dakika kadar bekledikten sonra tekrar tıklamak işe yarar
Not: 2. adımda ve bir dizine çıkmadan önce bir dakika veya daha fazla beklerseniz sorun oluşmaz ve klasör silinebilir
Visual Studio yolu
- Bir exe dosyası üreten bir proje oluşturun
- yürütülebilir dosyayı çalıştır ve kapat
- Projeyi hemen yeniden oluşturun (örneğin, kaynak dosyadaki tek bir karakteri değiştirerek)
- Getirileri önemli hata LNK1168: yazma açılamıyor /path/to/the.exe
Not: 2. adımda tekrar inşa etmeden önce bir dakika veya daha fazla beklerseniz sorun oluşmaz.
Bazı özellikler
- VS2008 / 2010/2011 ile hem Windows 7 32 hem de 64 bit'te olur
- 3 farklı makinede olur
- Herhangi bir virüs tarayıcım yok
- Bir grup hizmeti devre dışı bıraktım, ancak Windows'un normal çalışmasını engelleyen hiçbir şey yok, UAC de devre dışı
- Her tür diskte olur
- Her zaman Administrators grubundaki bir kullanıcı hesabını kullanırım
Açıkçası her iki senaryo da çok benzer ve oldukça tekrarlanabilir. Bu nedenle, bazı işlemlerin bir nedenle dosyayı açık tutması gerektiğini düşündüm ve daha sonra tekrar serbest bıraktım. Ancak, sysinternals kullanma
handle -a
söz konusu exe dosyası asla görünmez. (bu tanıtıcı kullanmak için doğru yol, değil mi?) Bu yüzden explorer / VS bildirirken dosyaya erişemiyorlar, handle.exe hiçbir yerde kullanımda olmadığını söylüyor. Bu beni oldukça clueless bırakıyor, bu yüzden birinin bir çözüm bulup bulamayacağını merak ediyorum: bu neden oluyor ve nasıl çözülüyor?
Sorulan sorulara yanıt olarak güncelleme :
- Sorunu Güvenli Modda yeniden oluşturamadım
- Bir grup kabuk uzantısı kurulur. SellExView'dan, tüm makineler için ortak olan microsoft olmayanlar şunlardır: NitroPDF, WinRAR, TortoiseGit, TortoiseSvn, NVidia. Tortoise olanları en şüpheli bulurdum, ancak 'Durum Önbelleği' seçeneği için 'Durum önbelleği yalnızca bir klasör, özyinelemeli bindirmeler' olarak ayarlanmış olsa da, çalışan TortoiseCache.exe yok.
- Explorer sorunu ile, ProcessExplorer yürütülebilir dosyayı göstermez. Yürütülebilir dosyanın dizinini gösterir, ancak silindikten sonra bile göstermeye devam eder, böylece gerçekten ilgili görünmüyor
- VS sorunu ile, hedef dizinde hiçbir explorer penceresi açık olmasa bile VS ile olur. Ve yine, ProcessExplorer yürütülebilir dosyayı ya da yürütülebilir dosyanın bulunduğu dizini göstermez. VS ile bu 'modda', sorunun yalnızca yürütülebilir dosyayı çalıştırırken oluştuğunu unutmayın. Çalışmıyorsa, zaman zaman sorunsuz bir şekilde oluşturabilirim.
- 'VS modunda' ve yürütülebilir klasörün dizininde açık bir explorer penceresi (sadece bir C # exe ile test edildi), garip alır: VS exe başka bir işlem tarafından kullanılıyor şikayet çünkü tekrar inşa edemez. Ancak, exe'yi açık explorer penceresinden silersem, bu işe yarar ve sonuç olarak bina başarılı olur. Yine, ProcessExplorer'da hiçbir referans yok. Hangi benim bulguları handle.exe ile eşleştirmek gibi görünüyor (PE ve tanıtıcı zaten aynı API dahili kullanmak değil mi?)
Güncelleme 2 Sadece explorer olamaz: explorer.exe'yi öldürdükten sonra VS sorunu hala var.
Güncelleme 3 Asher'ın önerdiği gibi Process Monitor'ü kullanmak ilginç gerçekleri ortaya koyuyor: explorer modu için, dizini açtıktan sonra IRP_MJ_CREATE'e 10 çağrı var. Ancak IRP_MJ_CLEANUP'a yalnızca 9 çağrı. Bütün bu çağrılar bu nedenle kesinlikle, Shell32.dll içinde kaynaklı olmayan sorunu yüklemek 3. taraf. Soruna neden olan IRP_MJ_CLEANUP eksik olanı açıktır: dizini açtıktan tam 1 dakika sonra, Sistem işleminin kendisi IRP_MJ_CLEANUP çağrısını yayınlar ve dosya serbest bırakılır ve silinir.
Ancak, bunun neden olduğunu hala anlayamadım. Yaptığım bazı değişikliklerin tetiklediği bir kaşif hatası mı?
Çözüm! Devre dışı bıraktığım hizmetlere baktığımda, Uygulama Deneyimi'nin açıklamasının , uygulama başlatıldıkça uygulamalar için uygulama uyumluluğu önbellek isteklerini işlediğini söylediğini fark ettim . Tanıdık geliyor. Gerçekten de, hizmete başladıktan sonra artık sorunlardan hiçbirini üretemiyorum ve ProcMon'un çıktısı farklı ve daha kısa. Komik olsa da, hizmeti tekrar durdurduktan sonra, her şey hala iyi ve prokmonun çıktısı hala daha kısa.
Bunu iki makinede denedim, tüm 3. parti malzemeleri mutlu bir şekilde çalışıyor ve hepsi hala iyi.
Bunun gerçek bir hata olup olmadığından emin değilim.
Bounty, bu konuda daha derin bir içgörü sağlayabilecek herkese gider, aksi takdirde beni sonunda ProcMon'a yönlendirdiği için beni sonunda doğru yönde yönlendirdi.