जब क्रियान्वित प्रशासनिक विशेषाधिकार के बिना रॉय की जवाब जब मौजूदा केवल पढ़ने के लिए फ़ाइलों को अधिलेखित करने के लिए प्रयास कर रहा है या जब की नकल की केवल पढ़ने के लिए फ़ाइलों के टाइमस्टैम्प सेट करने का प्रयास एक अपवाद (UnauthorizedAccessException) फेंक देते हैं।
निम्नलिखित समाधान रॉय के उत्तर पर आधारित है, लेकिन इसे केवल पढ़ने के लिए फाइलों को ओवरराइट करने के लिए विस्तारित करता है और केवल फाइलों को पढ़ने के लिए टाइमस्टैम्प को बदलने के लिए फ़ाइल की केवल पढ़ने की विशेषता को संरक्षित करते समय सभी प्रशासक विशेषाधिकार के बिना निष्पादित करते हैं।
public static void CopyFileExactly(string copyFromPath, string copyToPath)
{
if (File.Exists(copyToPath))
{
var target = new FileInfo(copyToPath);
if (target.IsReadOnly)
target.IsReadOnly = false;
}
var origin = new FileInfo(copyFromPath);
origin.CopyTo(copyToPath, true);
var destination = new FileInfo(copyToPath);
if (destination.IsReadOnly)
{
destination.IsReadOnly = false;
destination.CreationTime = origin.CreationTime;
destination.LastWriteTime = origin.LastWriteTime;
destination.LastAccessTime = origin.LastAccessTime;
destination.IsReadOnly = true;
}
else
{
destination.CreationTime = origin.CreationTime;
destination.LastWriteTime = origin.LastWriteTime;
destination.LastAccessTime = origin.LastAccessTime;
}
}
स्रोत
2013-06-20 12:03:16
गंतव्य फ़ाइल पहले से मौजूद होने पर सही मान प्राप्त करने के लिए आपको 'गंतव्य' पर 'ताज़ा करें' (या बाद में इसे बनाने) को कॉल नहीं करना होगा? –
@ पॉल रूएन: आप सही हैं - मैंने तदनुसार जवाब अपडेट किया है, धन्यवाद। –