2012-07-04 9 views
5

मैं VirtualStore में आवेदन के पथ प्राप्त करना चाहते हैं। \ Program Files (x86) \ उदाहरण अनुप्रयोग \ data.iniकैसे एक आवेदन के AppData VirtualStore पथ प्राप्त करने के लिए?

:

उदाहरण के लिए, फ़ाइल जो मैं जरूरत इस निर्देशिका (मैं रजिस्ट्री से इस पथ हो रही है)

सी में है

मैं इस पथ कैसे मिल सकता है?

C: \ Users \ User388 \ AppData \ Local \ VirtualStore \ प्रोग्राम फ़ाइलें (x86) \ उदाहरण अनुप्रयोग \ data.ini

अद्यतन:

नहीं में इस पथ मेरी आवेदन।

मैं कैसे यह संभव एप्लिकेशन डेटा में पथ प्राप्त करने के लिए जब केवल प्रोग्राम फ़ाइलों

+0

इस http प्रयास करें: // stackoverflow

public void Main() { string Path = ""; string File = "data.ini"; string FullFilePath = ""; // we can get Path = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); //Path = "C:\Program Files (x86)\Example App" FullFilePath = CheckFile(Path, File); Interaction.MsgBox("FullFilePath: " + FullFilePath, MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Example Debug"); } /// <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> public string CheckFile(string FilePath, string FileName) { string OriginalPath = ""; string VirtualStorePath = ""; // Make sure path is padded to the right with a \ if (FilePath.EndsWith("\\")) { OriginalPath = FilePath; } else { OriginalPath = FilePath + "\\"; } 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)) { FilePath = VirtualStorePath; return VirtualStorePath + FileName; } if (IO.File.Exists(OriginalPath + FileName)) { return OriginalPath + FileName; } else { Interaction.MsgBox("No file in CheckFile(FilePath: " + FilePath + Constants.vbNewLine + "FileName: " + FileName + ")", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Example Debug"); // we don't have this file return OriginalPath + FileName; } } 

नीचे VB.net कोड है:

नीचे सी # कोड है।com/प्रश्न/867485/c-sharp-getting-the-path-of-appdata – djserva

+0

आप फ़ाइल को एक्सेस कर सकते हैं जैसे कि यह अभी भी 'C: \ Program Files (x86) \ example App \ data.ini' में है। विंडोज फ़ाइल वर्चुअलाइजेशन आपके लिए काम करेगा। फ़ाइल वर्चुअलाइजेशन पर अधिक detials के लिए इसे देखें http://www.codeproject.com/Articles/66275/Windows-Vista-File-and-Registry-Virtualization –

+0

कृपया मेरा अपडेट किया गया प्रश्न देखें – user525717

उत्तर

1

यह मानते हुए कि Example App कोड पहले निर्देशिका लिया गया है में चल रहे एप्लिकेशन

string strFilePath = Path.Combine(Application.ExecutablePath, "Data.ini"); 
उपयोग कर रहा है में winodows उपयोगकर्ता नाम और पथ पता पूछा

दूसरा पहली नजर में एक सेट स्थान की तरह नहीं दिखता है, लेकिन इस के लिए आप Application और Environment वर्गों के साथ प्रयोग कर सकते हैं।

string strFilePath = Path.Combine(Application.UserAppDataPath, "Data.ini"); 

मुझे उम्मीद है कि यह मदद करता है।

संपादित करें: आपके उत्तर के लिए इस लिंक https://stackoverflow.com/a/3916868/626442 देखें।

+0

कृपया मेरा अपडेट किया गया प्रश्न देखें – user525717

+0

संपादित करें I बना दिया... – MoonKnight

0

अतीत में, कुछ अनुप्रयोगों में मौजूदा सुरक्षा स्थिति और माइक्रोसॉफ्ट विंडोज ऑपरेशन सिस्टम (ओएस) द्वारा सलाहकृत स्थानों में आईएनआई कॉन्फ़िगरेशन फ़ाइलों को पढ़ और लिखना बहुत खुश था। विंडोज 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