[英]File does not show on explorer, but VB.NET open it
我的程序在Windows系統路徑上寫了一些文件(C:\\ windows \\ syswow64 ...)。
其中一個文件因測試原因被刪除,我們正在更改內容,我們需要將其刪除。 好的,這里沒問題,文件消失了(差不多......)。 問題是,我的應用程序仍然獲取文件! 這很有趣,因為我真的刪除了文件(shift + del)
我測試FileInfo類是否存在文件。
我為此瘋狂。 我看不出哪里是錯誤的。 當然,在文件夾選項中可以看到隱藏和系統文件...
謝謝
我的代碼如下:
Public Shared Function GetUserConfigFile() As String
Dim UserConfigFile As String = Metodos.GetUserConfigPath("config.gf")
'Above we have C:\Windows\SysWOW64\Microsoft\....\config.gf
Dim ConfigFile As New IO.FileInfo(UserConfigFile)
ConfigFile.Refresh()
EventLog.RegisterDebugMessage("ConfigFile.Exists:{0};ConfigFile.Length:{1}", ConfigFile.Exists, ConfigFile.Length)
If ((ConfigFile.Exists AndAlso ConfigFile.Length = 0) OrElse Not ConfigFile.Exists) Then
Dim config As StreamWriter = IO.File.CreateText(UserConfigFile)
config.WriteLine("<?xml version=""1.0""?><cnfg></cnfg> ")
config.Close()
config.Dispose()
End If
EventLog.RegisterDebugMessage("config.gf -> {0}", IO.File.ReadAllText(UserConfigFile))
'''''''''''And here it's show me the content of the file... -.-''''''
Return UserConfigFile
End Function
我猜你正被文件系統重定向器( MSDN )擊中
在大多數情況下,只要32位應用程序嘗試訪問%windir%\\ System32,就會將訪問權限重定向到%windir%\\ SysWOW64。 對%windir%\\ lastgood \\ system32的訪問權限被重定向到%windir%\\ lastgood \\ SysWOW64。 對%windir%\\ regedit.exe的訪問權限被重定向到%windir%\\ SysWOW64 \\ regedit.exe。
System32和SYSWOW64文件夾會發生一些魔力。 (具有諷刺意味的是,32位文件存儲在WOW64中,64位文件存儲在System32中)
MSDN頁面提供了一個可行的解決方案:
32位應用程序可以通過%windir%\\ Sysnative替換%windir%\\ System32來訪問本機系統目錄。 WOW64將Sysnative識別為一個特殊別名,用於指示文件系統不應重定向訪問。 此機制靈活且易於使用,因此,它是推薦的繞過文件系統重定向的機制。 請注意,64位應用程序無法使用Sysnative別名,因為它是虛擬目錄而不是真實目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.