जब भी मैं fopen का उपयोग कर एक फ़ाइल बनाने के लिए प्रयास करते हैं, fopen कृत्यों फ़ाइल ठीक से खोल दिया गया है के रूप में अगर और यह उसकी पूर्ण एक्सेस है, लेकिन यह 'नहीं करता है वास्तव में फ़ाइल बनाते हैं। मेरे प्रोग्राम में सिस्टम रूट फ़ोल्डर में लेखन पहुंच नहीं है क्योंकि इसे वहां लिखने के लिए व्यवस्थापक पहुंच की आवश्यकता है, लेकिन fopen() क्यों कोई त्रुटि नहीं दे रहा है?fopen अदृश्य रूप में विफल रहता है
किसी भी विचार कैसे उसमें कोई त्रुटि है या नहीं करता है, तो बताने के लिए? फ़ाइल हैंडल जो लौटाई जाती है जब मैं एक सुरक्षित निर्देशिका में फ़ाइल खोलने की कोशिश कर रहा हूं, वही है जब मैं एक निर्देशिका में एक फ़ाइल खोलता हूं जहां मेरे पास लेखन पहुंच है।
मैं fopen के विभिन्न विभिन्न संस्करणों (fopen, _wfopen, _wfopen_s), लेकिन वे सभी एक ही उत्पादन के साथ इस कोशिश की है।
दिलचस्प बात यह GetLastError() ERROR_ALREADY_EXISTS देता है।
FILE *FileHandle;
DWORD error = _wfopen_s(&FileHandle, L"\\filename.txt", L"a");
Win32Error = GetLastError();
if (error != 0 || FileHandle == NULL)
{
//Throw error
}
else
{
//write to file
//close file
}
संपादित करें:
यहाँ कोड है कि मैं का उपयोग कर रहा है के रूप में rerun ने कहा, फ़ाइल virtualization की वजह से% APPDATA% में बनाया जा रहा है। क्या कोई इस सुविधा को अक्षम करने के बारे में जानता है?
यह निश्चित रूप से करता है। –
वाह, हाँ, यही वह जगह है जहां लॉग समाप्त हो रहा था, धन्यवाद! कोई विचार कैसे फॉपेन को इसके बजाय त्रुटि फेंक सकता है? –