जिस कंपनी के साथ मैं काम कर रहा हूं, वह पुराना vb6 में लिखा गया एक प्रोग्राम है, जिसे अक्सर अद्यतन किया जाता है, और अधिकांश क्लाइंट मैप किए गए नेटवर्क ड्राइव से निष्पादन योग्य चलाते हैं। इसमें वास्तव में आश्चर्यजनक रूप से कुछ मुद्दे हैं, जिनमें से सबसे बड़ा स्वचालित अपडेट है। वर्तमान में अद्यतनकर्ता प्रोग्राम (सी ++ में लिखा गया) मौजूदा exe का नाम बदलता है, फिर नए संस्करण को पुराने संस्करण के स्थान में डाउनलोड और स्थान देता है। यह आमतौर पर ठीक काम करता है, लेकिन कुछ वातावरण में यह बस विफल रहता है।साझा फ़ाइलों को प्रोग्रामेटिक रूप से बंद करें
समाधान this command from microsoft:
for /f "skip=4 tokens=1" %a in ('net files') do net files %a /close
चल रहा है यह आदेश सभी नेटवर्क फ़ाइलों कि (ठीक है ... सबसे) साझा कर रहे हैं और उसके बाद अपडेटर exe की जगह ले सकता बंद कर देता है।
C++ में मुझे लगता है कि आदेश को चलाने के लिए System("");
समारोह का उपयोग कर सकते हैं, या मैं प्रश्न में विशेष फ़ाइल की तलाश में परिणामों के माध्यम से net files
के उत्पादन अनुप्रेषित सकता है, और पुनरावृति और net file /close
आदेश चला उन्हें बंद करने के लिए। लेकिन अगर यह बेहतर विश्वसनीयता और भविष्य की सुरक्षा के लिए समान क्षमताओं वाले Winapi फ़ंक्शंस थे तो यह बहुत अच्छा होगा।
क्या मेरे लिए प्रोग्रामेटिक रूप से सभी नेटवर्क साझा फ़ाइलों को ढूंढने और प्रासंगिक लोगों को बंद करने का कोई तरीका है?
ऐसा लगता है कि यह एक विंडोज विशिष्ट सी ++ प्रश्न है ... – shargors
हां यह है, खेद है कि मैं एक टैग जोड़ूंगा – wizebin
मैं आपको कुछ विंडोज़ एपीआई खोजने के लिए एमएसडीएन खोजने की सलाह देता हूं जो आपको नेटवर्क फ़ाइलों को बंद करने में मदद कर सकता है। –