अतीत में, कुछ अनुप्रयोगों में मौजूदा सुरक्षा स्थिति और माइक्रोसॉफ्ट विंडोज ऑपरेशन सिस्टम (ओएस) द्वारा सलाहकृत स्थानों में आईएनआई कॉन्फ़िगरेशन फ़ाइलों को पढ़ और लिखना बहुत खुश था। विंडोज 7, 8 और 10 में, ओएस उन फ़ोल्डरों की सुरक्षा करता है, जो उपयोगकर्ता प्रोफ़ाइल वर्चुअलस्टोर के तहत नया संस्करण संग्रहीत करता है।
सी # और वीबीनेट कोड नीचे जांचें कि क्या फ़ाइल वर्चुअलस्टोर पथ (यानी "सी: \ उपयोगकर्ता \\ ऐपडाटा \ स्थानीय \ वर्चुअलस्टोर \ प्रोग्राम फ़ाइलें (x86) \ उदाहरण ऐप" में मौजूद है या नहीं) और यदि यह अस्तित्व में नहीं है, मूल स्थान में जांचें ("सी: \ प्रोग्राम फ़ाइलें (x86) \ उदाहरण ऐप")। चेकफाइल() फ़ाइल के पूर्ण फ़ाइल पथ को वापस कर देगा।
FullFilePath = CheckFile ("सी: \ Program Files (x86) \ उदाहरण ऐप्लिकेशन" "data.ini"));
यह अन्य फ़ोल्डर्स (जैसे "सी: \ विंडोज") के साथ भी काम करता है कि आपका विरासत कोड गड़बड़ करने का प्रयास कर सकता है।
Sub Main()
Dim Path As String = ""
Dim File As String = "data.ini"
Dim FullFilePath As String = ""
' we can get
Path = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
'Path = "C:\Program Files (x86)\Example App"
FullFilePath = CheckFile(Path, File)
MsgBox("FullFilePath: " & FullFilePath, MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Example Debug")
End Sub
''' <summary>
''' CheckFile() - Check the String with Path and Filename. Make sure path is padded to the right with a \
''' </summary>
''' <param name="FilePath">Path of the file</param>
''' <param name="FileName">File name</param>
''' <returns>String with Path and Filename</returns>
''' <remarks>
''' Support the file search in user VirtualStore first and original path later.
''' </remarks>
Function CheckFile(ByVal FilePath As String, ByVal FileName As String) As String
Dim OriginalPath As String = ""
Dim VirtualStorePath As String = ""
' Make sure path is padded to the right with a \
If FilePath.EndsWith("\") Then
OriginalPath = FilePath
Else
OriginalPath = FilePath & "\"
End If
VirtualStorePath = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\VirtualStore\" & OriginalPath.Substring(3)
'MsgBox("VirtualStorePath: " & VirtualStorePath & vbNewLine & "OriginalPath: " & OriginalPath,
' MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "AIMS Debug")
' return first VirtualStorePath if the file exists in user VirtualStore
If IO.File.Exists(VirtualStorePath & FileName) Then
FilePath = VirtualStorePath
Return VirtualStorePath & FileName
End If
If IO.File.Exists(OriginalPath & FileName) Then
Return OriginalPath & FileName
Else
MsgBox("No file in CheckFile(FilePath: " & FilePath & vbNewLine & "FileName: " & FileName & ")",
MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Example Debug")
' we don't have this file
Return OriginalPath & FileName
End If
End Function
स्रोत
2017-08-11 08:47:05
इस http प्रयास करें: // stackoverflow
नीचे VB.net कोड है:
नीचे सी # कोड है।com/प्रश्न/867485/c-sharp-getting-the-path-of-appdata – djserva
आप फ़ाइल को एक्सेस कर सकते हैं जैसे कि यह अभी भी 'C: \ Program Files (x86) \ example App \ data.ini' में है। विंडोज फ़ाइल वर्चुअलाइजेशन आपके लिए काम करेगा। फ़ाइल वर्चुअलाइजेशन पर अधिक detials के लिए इसे देखें http://www.codeproject.com/Articles/66275/Windows-Vista-File-and-Registry-Virtualization –
कृपया मेरा अपडेट किया गया प्रश्न देखें – user525717