सी ++ (विशेष रूप से विज़ुअल सी ++ पर) में, कभी-कभी आप फ़ाइल नहीं खोल सकते हैं क्योंकि एक अन्य निष्पादन योग्य इसे खोला गया है और इसे पढ़ने के लिए साझा नहीं कर रहा है। अगर मैं ऐसी फाइल खोलने की कोशिश करता हूं, तो मैं प्रोग्रामिक रूप से यह कैसे पता लगा सकता हूं कि फ़ाइल लॉक कर रहा है?Win32 फ़ाइलों को पढ़ने के लिए बंद कर दिया गया है: यह पता लगाने के लिए कि उन्हें कौन लॉक कर रहा है
उत्तर
विंडोज 2000 और उच्चतम में, आप कर्नेल-मोड ड्राइवर का उपयोग किए बिना ऐसा नहीं कर सकते हैं। प्रक्रिया एक्सप्लोरर और अन्य समान उपकरण इसे पूरा करने के लिए स्वचालित रूप से ड्राइवर लोड करते हैं। ऐसा इसलिए है क्योंकि फ़ाइल हैंडल कर्नेल स्पेस में हैं और उपयोगकर्ता-मोड अनुप्रयोगों (EXE फ़ाइलों) द्वारा उपलब्ध नहीं हैं।
यदि आप वास्तव में ऐसा करने में रुचि रखते हैं, तो this project पर एक नज़र डालें।
एमएसडीएन अनुमोदित तरीका IFileIsInUse::GetAppName()
है। हालांकि, Vista की आवश्यकता है।
लोड होने वाले प्रोग्राम से सहयोग की आवश्यकता होती है, जो कि एक फ़ाइल खोला गया है, जो कि पूछा जा रहा है जैसा नहीं है। – Mehrdad
यह सबसे अधिक जानकारी युक्त तरीका है, यही कारण है कि आपको पहले इसे आजमाएं। – MSalters
निश्चित रूप से, इसे आजमाने में कोई हानि नहीं है, लेकिन यह काम करने की संभावना बहुत कम है इसलिए ओपी को सबसे अधिक संभावना के बिना एक विकल्प की आवश्यकता होगी। – Mehrdad
- 1. यह पता लगाने के लिए कि कौन सा थ्रेड जावा में फ़ाइल लॉक कर रहा है?
- 2. यह पता लगाने के लिए कि कौन सी प्रक्रियाओं में फ़ोल्डर या फ़ाइल लॉक है?
- 3. यह पता लगाने के लिए कि कौन सा पैकेज/प्रक्रिया तालिका को अद्यतन कर रही है?
- 4. यह पता लगाने के लिए कि विंडोज
- 5. यह पता लगाने के लिए कि कौन सा आरएसपीईसी परीक्षण इतना समय ले रहा है
- 6. यह पता लगाने के लिए कि क्या DOMContentLoaded को निकाल दिया गया था
- 7. यह पता लगाने के लिए जावास्क्रिप्ट का उपयोग कर रहा है कि यूआरएल आईफ़्रेम
- 8. रोम प्रदाता कौन है यह पता लगाने के लिए कैसे?
- 9. यह पता लगाने के लिए कि UIScrollView स्क्रॉल कर रहा है या वह
- 10. यह पता लगाने के लिए कि कोई कनेक्टेड यूएसबी प्रिंटर चालू या बंद है या नहीं?
- 11. , का पता लगाने के लिए जब आवेदन बंद कर दिया है
- 12. यह पता लगाने के लिए कि क्या जेएमएस कनेक्शन है?
- 13. पता लगाएं कि नेटवर्क शेयर पर फ़ाइल लॉक कौन कर रहा है
- 14. यह पता लगाने के लिए कि कौन से फ़ंक्शंस को रेखांकित नहीं किया गया था
- 15. मुझे कैसे पता चलेगा कि ब्राउज़र के अंदर जावास्क्रिप्ट बंद कर दिया गया है या नहीं?
- 16. यह पता लगाने के लिए कि मेमोरी लीक कहां है?
- 17. बैकबोन रूटिंग यह पता लगाने के लिए कि आगे या पीछे दबाया गया है
- 18. मुझे कैसे पता चलेगा कि एनएसविंडो बंद बटन का उपयोग कर बंद कर दिया गया था?
- 19. यह जांचने के लिए कि क्या लिनक्स कंसोल स्क्रीनसेवर स्क्रीन को खाली कर दिया गया है
- 20. माइस्क्ल लेनदेन लॉक के लिए इंतजार कर रहा है जो पहले से ही दिया गया है .. यह डेडलॉक
- 21. यह पता लगाने के लिए कि मेरा एप्लिकेशन वर्चुअल मशीन में चल रहा है या नहीं?
- 22. यह पता लगाने के लिए कि क्या स्पिइट को pygame
- 23. यह पता लगाने के लिए कि मेरी साइट कहां है
- 24. यह पता लगाने के लिए कि उपयोगकर्ता jQuery का उपयोग कर पृष्ठ के अंत तक पहुंच गया है या नहीं?
- 25. यह पता लगाने के लिए कि क्या कोई अधिसूचना खारिज कर दी गई है?
- 26. यह पता लगाने के लिए कि COALESCE ऑपरेटर किस कॉलम/मान को सफलतापूर्वक चुना गया है?
- 27. यह पता लगाने के लिए कि कोई वेबसाइट HSTS
- 28. यह पता लगाने के लिए कि वर्तमान में webdeploy/msdeploy का कौन सा संस्करण स्थापित है?
- 29. जावा - यह पता लगाने के लिए कि कौन सी जार फ़ाइल आयात से आती है?
- 30. यह पता लगाने के लिए कि मेरा एएसपी.NET कोड किस खाते में चल रहा है?
आप देख सकते हैं कि प्रक्रिया एक्सप्लोरर 'सिस्टम' प्रक्रिया के डीएलएल को देखकर ड्राइवर लोड कर रहा है; आपको 'PROCEXP113.SYS' के समान ड्राइवर दिखाई देगा –