Vista幻影目录

2024-05-14

我们有一个程序,安装程序会检查配置文件是否存在,如果存在,它不会复制该文件(它假设用户已修改其配置文件并希望保留这些修改)。不幸的是,这是一个 Vista 之前的应用程序,它将配置文件保存在 Program Files 中。问题是,如果你在重新安装时手动清除该目录,某些API仍然认为那里有一个目录。例如,VB6 及其浏览文件对话框可以看到文件夹,但资源管理器、cmd shell 等无法看到文件夹。覆盖文件仍然会保留旧文件(对于某些 API,但不在于资源管理器),除了“浏览文件”对话框中的形式之外,无法将其删除。

这些 Phantom 文件夹发生了什么?我们如何删除该文件以便所有 API 看到相同的内容?也许这有关系TxF http://en.wikipedia.org/wiki/Transactional_NTFS#Transactional_NTFS,或用于搜索的索引器,但我们使用的安装程序 (InnoSetup) 和应用程序的部分(用 VB6 编写的部分)都看到文件的旧版本,而其他所有内容都看到当前版本。


正如 Oskar Duveborn 所说,您所看到的很可能是 Vista 的虚拟化行为。

当计算机启用了用户帐户控制 (UAC) 时,不允许标准用户和非提升程序写入程序文件夹。 Windows 相反会默默地将文件重定向到适当的子文件夹%AppData%\Local\VirtualStore(例如,C:\Users\MyUser\AppData\Local\VirtualStore).

如果您在资源管理器中浏览真实文件夹,您将看到“兼容性文件”工具栏按钮,您可以使用该按钮来浏览虚拟存储。

请注意,这只是 Windows 的兼容性行为 - 您的程序应该写入其自己的子文件夹%AppData%.

有关更多信息,请参阅这篇 TechNet 杂志文章 http://technet.microsoft.com/en-us/magazine/2007.06.uac.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vista幻影目录 的相关文章

  • Inno Setup:如何根据代码更改语言文件

    我使用自己的语言文件 isl 而不是使用 Inno Setup 的默认语言文件 它允许我自定义一些消息 但现在 我想要每种语言文件有两个版本 一个用于首次安装 一个用于更新 但是 是否可以从代码中选择一个文件 如果是 该怎么做 也许有一些比
  • 从 Inno Setup 项目内部调用 MySQL

    我正在为一些使用 MySQL 的软件编写安装程序 我正在尝试运行 sql用于在安装时设置数据库的脚本 唉 我目前在执行它时遇到了很大的问题 这个问题似乎是由于这样一个事实而产生的 当你设置一条通往 sql文件内的 execute SOURC
  • 基于 Windows 8 ARM 的平板电脑上的 VB6

    随着 Windows 8 将支持 VB6 我的问题是 Microsoft 是否在任何地方表示 是或否 VB6 应用程序将在基于 ARM 的平板电脑上运行 如果没有 是否有任何 ARM 模拟器 以便我们可以在 Windows 8 ARM 平板
  • Inno Setup安装先决条件[重复]

    这个问题在这里已经有答案了 我正在通过 Inno Setup 创建一个安装程序 我看到很多关于如何检测先决条件是否存在的代码示例 但没有任何关于当我找不到先决条件时如何实际安装先决条件的代码示例 我确信它非常简单 但是我该如何安装先决条件呢
  • 在 Inno Setup 中单击“下一步”按钮时验证自定义页面上的数据

    我已经设法获得一个基本脚本来显示向导 使用CreateInputFilePage 供用户识别我用来更新 XML 文件中某些设置的文件位置 但是 我想对所选文件的输入进行一些基本检查 而不是简单地接受用户提供的任何内容 例如 如果用户在内容无
  • inno setup bmp图像出现在单个页面上

    我希望 bmp 图像出现在单个页面 selectadditionaltasks 上 但它出现在所有页面上 我究竟做错了什么 procedure LogoOnClick Sender TObject var ResCode Integer b
  • 欢迎页面未显示,SelectDir 页面首先显示

    我正在尝试使用 Inno Setup 来制作安装程序 我想先显示欢迎页面 然后显示 SelectDir This is CurPageChanged示例代码 procedure CurPageChanged CurPageID intege
  • 使用 Inno Setup 更快地创建安装程序

    当我在大量文件 gt 2GB 上运行 Inno Setup 时 需要很长时间才能运行 我相信它把时间花在了压缩上 这应该是 CPU 限制的 但它只使用了几个 CPU 有没有办法将其分散到 许多 更多核心 具体来说 我正在处理这个提升发布存储
  • Inc 函数 Inno Setup

    这可能非常简单 但是当我尝试编译包含以下内容的程序时 Inc Count 在 Inno Setup 中我不断得到 未知标识符 Inc 我相信这就是在 Pascal 中递增整数的方式 并且对如何继续这里感到困惑 我正在使用 Inno Setu
  • Inno Setup:验证是否已安装 .NET 4.0

    我有一个需要 NET 4 0 才能运行的组件 我的 Inno Setup 安装程序如何验证它是否已安装 如果没有 则提示用户安装它 The InitializeSetup运行 Inno Setup 可执行文件时调用该函数 为自定义脚本插入此
  • 是否可以使用 Inno Setup 更改安装程序的窗口标题栏?

    是否可以使用 Inno Setup 更改安装程序的标题栏 默认情况下是 AppName My Program 当您运行安装程序时 标题栏中会出现 设置 我的程序 是否可以隐藏这个词 Setup 将以下行添加到您的 InnoSetup 脚本文
  • Inno Setup 安装程序的文本编码错误

    对于某些 Windows 安装 我的安装程序 Inno Setup 的俄语文本编码很差 所有机器都安装了Windows XP SP3 英文版 但有些机器可以运行 有些机器则没有 Windows 上有什么设置可以解决这个问题吗 Thanks
  • Inno Setup:有条件地删除用户主文件夹中的非空目录

    我正在通过 Inno Setup 为我的 Windows 应用程序创建安装程序 应用程序本身将一些配置数据写入用户主文件夹及其自己的子目录中 现在 在卸载过程中 我希望允许用户选择一个选项来删除该文件夹 该文件夹最初不是由 Inno Set
  • Inno Setup - XML 编辑 XPath 请求失败,并出现“运行时 NIL 接口异常”

    我已经为我的应用程序创建了一个 Inno Setup 脚本 其中我尝试在安装后步骤中编辑一些 XML 配置 主要是连接字符串 我有一些非常简单的 XPath 请求 但在使用时出现运行时异常selectSingleNode然而getEleme
  • 使用 Inno Setup 中格式化(部分粗体)的文本制作安装程序?

    有人看过 GOG com 游戏安装程序吗 如何制作像这样的欢迎文本字符串 包括单个标题中的路径和需要大小 其中部分内容加粗 以下是修改安装路径后如何更改字符串换行的示例 您可以使用TRichEditViewer http www jrsof
  • Inno 安装脚本中的 HTTP POST 请求

    我想通过 POST 将 Inno 安装过程中从用户收集的一些信息提交到我们的服务器 明显的解决方案是包含一个 exe 文件 安装程序会将其提取到临时位置并使用参数启动 但是 我想知道 有没有更简单 更好的方法 基于 jsobo 使用建议Wi
  • Windows XP 和 Vista 编程之间的主要区别是什么?

    从桌面应用程序开发人员的角度来看 Windows XP 开发和 Windows Vista 开发之间有什么区别吗 用户界面 看着Windows Vista 用户体验指南 http msdn microsoft com en us libra
  • 如何在 Inno Setup 中静默安装 Microsoft VC++ 可再发行组件?

    如何在 Inno Setup 中静默安装 Microsoft VC 可再发行组件 我使用了以下代码 除了安装进度窗口之外 大部分安装部分都是静默的 这是我的 Run 部分代码 Run Filename app bin vcredist x8
  • 将用户填写的表单添加到 Inno Setup

    我想添加一个小表格 由用户在程序安装时使用 Inno Setup 填写 然后需要将该表格和预定义的电子邮件地址通过电子邮件发回给我 该表格需要在几个领域中使用 例如 用户名 Address Email 电话号码等 一旦我有了一个例子 我希望
  • 如何在 VB6 中创建自动完成组合框?

    是否可以使用VB6下默认的ComboBox控件使其成为智能ComboBox 我们假设这些值已填充到组合框中 例如 New Delhi New World New York 我们需要 ComboBox 响应一个默认事件 因此当用户写入 N 时

随机推荐