विंडोज सेवा के भीतर SHFileOperation का उपयोग करना

यह संभव है, लेकिन क्या विंडोज सेवा के भीतर SHFileOperation का उपयोग करना उचित है? लगता है कि shell32.dll में उन सभी SHxxx API फ़ंक्शंस को उपयोगकर्ता स्तर के प्रोग्राम के साथ दिमाग में लिखा गया है। क्या मैं निश्चित हो सकता हूं कि SHFileOperation कभी भी GUI प्रदर्शित नहीं करेगा?

1

4 उत्तर

SHFILEOPTSTRUCT दस्तावेज़ के अनुसार, आप इसका उपयोग कर सकते हैं किसी भी यूआई को दिखने से रोकने के लिए निम्नलिखित झंडे:

FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR

या (यदि आप Windows Vista को लक्षित कर रहे हैं), FOF_NO_UI , जो ऊपर जैसा ही है।

विंडोज एसडीके में ShellAPI.h हेडर फ़ाइल में देखकर, FOF_NO_UI के खिलाफ टिप्पणी "किसी भी यूआई को बिल्कुल प्रदर्शित न करें" कहती है, इसलिए मुझे लगता है कि यह ठीक है SHFileOperation का उपयोग करने के लिए।

6
जोड़ा

मैं कहूंगा, यह उचित या सलाह नहीं है। अधिकांश शेल 32 एपीआई मूलभूत समझ के साथ लिखे गए थे कि उनका उपयोग इंटरैक्टिव प्रक्रियाओं में किया जाएगा। मुझे नहीं लगता कि आप इस बात की गारंटी दे सकते हैं कि SHFileOperation कभी भी यूआई घटक प्रदर्शित नहीं करेगा। वास्तव में, यदि आप IFileOperation (जो नया Vista इंटरफ़ेस है जो SHFileOperation को प्रतिस्थापित करता है), यह स्पष्ट रूप से बताता है:

शैल आइटम्स की प्रतिलिपि बनाने, स्थानांतरित करने, नाम बदलने, बनाने और हटाने के तरीकों के साथ-साथ प्रगति और त्रुटि संवाद प्रदान करने के तरीकों का खुलासा करता है। यह इंटरफ़ेस SHFileOperation फ़ंक्शन को प्रतिस्थापित करता है।

2
जोड़ा
इस बिंदु पर, मैं सहमत हूं। मैं इसका उपयोग करने की सोच रहा था क्योंकि ऐसा लगता है कि फाइलों को उनके सुरक्षा डिस्क्रिप्टर के साथ कॉपी करना प्रतीत होता है। मानक CopyFile नहीं करता है, इसलिए इसे समान व्यवहार प्राप्त करने के लिए अतिरिक्त कोड की आवश्यकता होती है।
जोड़ा लेखक Charles, स्रोत

मुझे सहमत होना है: उपयुक्त या सलाह नहीं है।

SHFileOperation का उपयोग करने के लिए प्रिंसिपल कारण यूआई के साथ संचालन करना है, और/या जो उलटा हो सकता है। अर्थात। फाइलों को हटाने के लिए SHFileOperation का उपयोग करके फ़ाइलों को एक रीसायकल बिन में रखने के बजाय मौजूदा इंटरैक्टिव उपयोगकर्ता को अनावृत्त करने या ऑपरेशन को पूर्ववत करने की अनुमति देने के बजाय उन्हें रीसायकल बिन में रखा जा रहा है। चूंकि सेवाएं एक गैर-इंटरैक्टिव डेस्कटॉप पर चलती हैं, कोई भी कभी भी उस रीसायकल बिन को साफ़ करने में सक्षम नहीं होगा।

1
जोड़ा

मेरे पास यह समस्या भी थी और सर्वर और नेटवर्क शेयरों के बीच एक सुरक्षित और भरोसेमंद नेटवर्क फ़ाइल प्रतिलिपि लागू करने पर काम कर रहा था (इनमें से अधिकतर शेयर सीआईएफएस/नेटएप फाइलर आधारित हैं) और SHFileOperation समय-समय पर विफल रहता है।

अब ROBOCOPY (Vista/Server 2008 ऊपर से सभी माइक्रोसॉफ्ट ओएस में डिफ़ॉल्ट रूप से उपलब्ध) का उपयोग शुरू किया और वास्तव में दिलचस्प और भरोसेमंद दिखता है।

this has opened my eyes: https://stackoverflow.com/a/1030752/559144

0
जोड़ा