Yürütülebilir dosyalara Windows 7 erişimi engellendi .. ne tarafından?


14

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

  1. Explorer ile en az bir exe dosyası içeren bir dizine gidin
  2. Hemen bir dizin yukarı git
  3. Şu adrese gittiğiniz dizini silin:
  4. 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
  5. 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

  1. Bir exe dosyası üreten bir proje oluşturun
  2. yürütülebilir dosyayı çalıştır ve kapat
  3. Projeyi hemen yeniden oluşturun (örneğin, kaynak dosyadaki tek bir karakteri değiştirerek)
  4. 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.


2
Birkaç soru. Explorer sorunu güvenli modda mı oluşuyor? Yüklü kabuk uzantılarınız var mı? Visual studio sorununuzla, işlem monitörünüzü çalıştırır ve exe'nize filtre uygularsanız, dosyaya erişen bir şey gösterir mi?
sgmoore

Tuhaf, her iki senaryo da benim için beklendiği gibi çalışıyor (hata yok). SGmoore'un önerdiği gibi, Process Monitor'ü çalıştırın ve klasörleri / dosyaları izleyin.
Novc 17ιᴇ007

@sgmoore güncellemeye bakın
stijn

Çağrıların bu 3. taraf yüklemelerini dışarıda bıraktığı shell32.dll'den kaynaklandığından% 100 emin misiniz? Bunun doğru olup olmadığından emin olmak için son derece düşük bir seviyede neler olup bittiğini bilmiyorum, ama kesinlikle yapacağım bir varsayım değil.
sgmoore

@sgmoore% 100 hayır, ancak% 99, evet. Sonucum sadece burada yazdıklarıma dayanmıyor; Ben procmon'ın calltack tam işlev adları görmek tüm sistem dlls için semboller var. Dizin açılırken explorer tarafından yapılan tüm çağrılar, CLoadIconTask gibi adların bulunduğu ve her yerinde 'Microsoft' yazan adlardan gelen sınıflardan gelir. Ben bir programcıyım, bu yüzden çağrı stoklarını yorumlama konusunda biraz bilgim var. Microsoft olmayan her şey AutoRuns'da hala devre dışıdır. Başka bir makinede değil, ancak tüm procmon çıkışı aynı. Tüm bu + sezgi beni sadece MS olduğuna inandırıyor.
stijn

Yanıtlar:


7

Gördüğünüz sorunun Windows Gezgini'nin oluşturduğu thumbs.db ile ilgili olduğunu düşünüyorum. Bunu devre dışı bırakmayı deneyin, yeniden başlatın ve sorunun yeniden oluşup oluşmadığına bakın.

Thumbs.db'yi devre dışı bırakmak için Grup İlkesi düzenleyicisini (gpedit.msc) açın, Kullanıcı Yapılandırması-Denetim Masası> Yönetim Şablonları-Klasör Seçenekleri> Windows Bileşenleri-Viev sekmesi> Windows Gezgini'ne gidin. "Gizli thumbs.db dosyalarında küçük resimlerin önbelleğe alınmasını kapat" seçeneğini bulun ve etkinleştirin.

Eğer işe yaramazsa Sysinternals Process Monitor'ü kullanarak araştırmayı deneyebilirim. erişim reddedildiğinde klasöre kimin eriştiğini izlemek için kullanın. aslında erişim reddedildi mi yoksa paylaşım ihlali mi yoksa birinin dosyayı tuttuğu anlamına gelir.


1
Thumbs.db win7 içinde mevcut değil.
kinokijuf

1
Evet öyle. Klasör Seçenekleri'ne gidin ve "gizli dosyaları, klasörü ve sürücüleri göster" i etkinleştirin
Asher

1
%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_*.dbKaynak uzak değilse (ağ paylaşımında olduğu gibi), bu noktada thumbs.dbuzak bir konumda depolanan (GP tarafından devre dışı bırakılabilir ) kullanılmadığı sürece Windows 7 yerel küçük resim önbelleğini ( ) kullanır .
Novc 20ιᴇ007

2
upvoted: Küçük resim önbellekleme seçeneği olmamasına rağmen, ProcessExplorer veya tanıtıcı aksine, ProcMon kullanarak nihayet beni bir yere var, dizini açtıktan veya exe çalıştırdıktan tam olarak 1 dakika sonra, bir IRP_MJ_CLEANUP var Dosyayı serbest bıraktığı görülen Sistem işleminden: bu olaydan hemen sonra dizini tekrar silebilirim. ProcMon'un sağladığı şeylerden bir anlam kazanırsam, bunu daha fazla araştıracağım.
stijn

3
@kinokijuf Ahser'in cevabını karıştırdığını fark ettim. Neden yaptığını bilmiyorum, ama mantıklı değil: ilk önce, cesurca, başparmak olmadığını söylüyorsun. Db. Daha sonra Asher'ın cevabını, thums.db'yi nasıl devre dışı bırakacağını söyleyen kısmı düzenleyemezsiniz, bu da onu kullanılamaz hale getirir ("Thumnbnails'i Önbelleğe Alma" XP içindir). Lütfen böyle şeyler yapma.
stijn

3

Herhangi bir güvenlik ürününün kurulu olmadığından emin misiniz?

Açıkladığınız senaryolar, bazı ürünlerin sizin tarafınızdan erişilebilen her yürütülebilir dosyaya mümkün olan her şekilde eriştiği ve ona özel erişimi imkansız hale getirdiği teorisi ile uyumludur. Bunun bir antivirüs olması gerekmez, örneğin hızlı arama için bir indeksleyici veya herhangi bir şey (hatta bir virüs) olabilir.

Bu teori, Windows dışında hiçbir ürünün piyasaya sürülmediği Güvenli modda önyükleme yaparak test edilebilir.

Dosya erişimlerini izlemek için en iyi araç Process Monitor'dür . Tüm başlangıç ​​ürünlerini bulmak ve tekrar kapatmak için bir başka mükemmel araç Autoruns'tur .


indeksleme, windows araması da kapalıdır. Herhangi bir üçüncü taraf güvenliğim veya arama aracım yok; temelde öneri otomatik çalıştırmalarda herhangi bir 3. taraf aracı devre dışı bırakmak, sonra tek tek etkinleştirmek?
stijn

Güvenli mod önyüklemesinde bu gerçekleşmiyorsa, kurulu bazı ürünlerin sorumlu olduğundan kesinlikle emin olabilirsiniz. Otomatik Çalıştırma öğelerini, gruplar halinde başlangıç ​​öğelerini devre dışı bırakmak ve bulana kadar yeniden başlatmak için kullanabilirsiniz. Otomatik Çalıştırmaların avantajı, öğeleri kolayca yeniden etkinleştirebilmenin yanı sıra mevcut durumu kaydedebilmeniz / geri yükleyebilmeniz / karşılaştırabilmenizdir. Ancak yine de, her ihtimale karşı, bir sistem geri yükleme noktası oluşturmak daha iyidir.
harrymc

oturum açma, Explorer, Internet Explorer ve hizmetler altında microsoft olmayan her şeyi devre dışı bıraktı. Sorun hala var. Normal modda yüklü olanı güvenli modda karşılaştırmanın bir yolu var mı?
stijn

Temel olarak, Otomatik Çalıştırmalarda gördüğünüz her şey yalnızca normal modda yüklenir.
harrymc

Hizmetler, Ağ vb.
Hariç

2

Dosya veya dizin çekirdek modundan açılabilir, ardından

handle -a

göstermez ve ProcMon, Sistem işleminden sisteme IRP isteklerini gösterir.

Windows Çekirdeğinin tüm işlemlerle eşlenen bir kısmı vardır ve Windows Çekirdeğinin ayrı bir işlemde çalışan başka bir kısmı vardır. İkincisine Windows Executive denir.

Bu, Windows Executive işleminde çekirdek modundan açılan dosya veya dizinden kaynaklanır.


1

Bu exe okuma simgeleri ve meta veri Explorer olabilir.


Bu Explorer için olası bir açıklamadır, ancak Explorer bu klasörü aynı anda görüntülemedikçe görsel stüdyo için değildir. @stijn: Bu Explorer olmadan görsel stüdyoda oluyor mu?
harrymc

@harrymc güncelleme bakın, explorer olmadan gerçekleşir (iyi, explorer.exe hala çalışıyor, ancak exe dizininde değil)
stijn

Ve kişi bu sorunu nasıl çözer?
Simon Sheehan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.