繁体   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