2011-10-15 20 views
5

मैं नीचे आदेश का उपयोग मशीन रिबूट के बाद कुछ फ़ाइलों को हटाना:स्थगित MoveFileEx ऑपरेशन को कैसे रद्द करें?

MoveFileEx(PChar(File_Address), Nil, MOVEFILE_DELAY_UNTIL_REBOOT); 

कैसे मैं इस आदेश के निष्पादन के रद्द करने और रिबूट के बाद हटाया जा रहा से फाइल को रोकने के कर सकते हैं?

+2

ऐसा करने के लिए कोई समर्थित तरीका प्रतीत नहीं होता है। यह अनुरोध क्या चल रहा है? –

+2

सबसे आसान तरीका यह है कि फ़ाइल को पहले स्थान पर हटाने के लिए 'MoveFileEx' को कॉल न करें जबतक कि आप पूरी तरह से सुनिश्चित नहीं हैं कि आप इसे हटाना चाहते हैं। –

उत्तर

13

फाइलें जिन्हें आप हटाने के लिए एनक्यू करते हैं, वे HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations के तहत रजिस्ट्री में रखे गए हैं। फ़ाइलों को हटाए जाने से रोकने के लिए, आप वहां से प्रविष्टियों को हटा सकते हैं। मुझे इसके लिए एपीआई फ़ंक्शन नहीं मिला।

+4

+1। आप सीधे डेल्फी की रजिस्ट्री कक्षा या एपीआई का उपयोग करके उस रजिस्ट्री कुंजी से प्रविष्टि को हटा सकते हैं, लेकिन ध्यान दें कि Vista और ऊपर आपको प्रशासक के रूप में लॉग इन करने की आवश्यकता होगी (सामान्य उपयोगकर्ता HKLM से लिख नहीं सकते/हटा सकते हैं) । बेहतर समाधान, निश्चित रूप से, पहली जगह में प्रविष्टि नहीं बनाना है जब तक कि आप पूरी तरह से निश्चित नहीं हैं कि आप फ़ाइल को हटाना चाहते हैं। :) –

0

मुझे लगता है कि आप फ़ाइल की प्रतिलिपि सकता है (क्योंकि यह अभी तक हटाया नहीं गया है) और फिर का उपयोग

MoveFileEx(copy_of_file, original_file, MOVEFILE_DELAY_UNTIL_REBOOT) 

रिबूट के दौरान जगह में वापस डाल करने के लिए।

जैसा कि केन व्हाइट ने इंगित किया है, हालांकि, यह स्थिति पहली जगह से बचने के लिए बहुत बेहतर होगी।

+0

यह [वास्तव में] है (http://msdn.microsoft.com/en-us/library/Aa365240.aspx) दस्तावेज। _ "बूट और डिलीशन ऑपरेशन बूट समय पर उसी क्रम में किए जाते हैं जिन्हें वे कॉलिंग एप्लिकेशन में निर्दिष्ट करते हैं।" _ – CodeCaster

+0

@ कोडकस्टर, धन्यवाद, और अच्छी तरह से देखा गया। मैंने तदनुसार संपादित किया है। –

संबंधित मुद्दे