簡體   English   中英

文件不在資源管理器上顯示,但VB.NET打開它

[英]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別名,因為它是虛擬目錄而不是真實目錄。

與Mark Peters所說的非常相似,另一件可能發生的事情是UAC數據重定向,因為您沒有該文件夾的寫權限,因此您真正看到的是位於%LOCALAPPDATA%\\VirtualStore\\Windows\\System32 您的應用程序是否以管理權限運行,如果沒有,那么文件是否會丟失?

我有一篇更長篇文章描述了超級用戶的類似問題。

順便說一下為什么你“ 需要 ”讓你的程序訪問windows目錄中的文件? 你在做什么,為你的程序增加了這個要求?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM