为什么我的应用程序允许我将文件保存到 Vista 中的 Windows 和 System32 文件夹?

2023-11-22

我有一个用 Delphi 7 编写的应用程序,不需要管理员权限即可运行。

由于某种原因,我能够从应用程序内将文件保存到 c:\windows 和 c:\windows\system32,即使应用程序未请求 UAC 提升。我以管理员身份登录UAC已开启我没有更改任何默认的 UAC 设置。这些文件实际上也显示在 Windows 资源管理器下。我没有使用“以管理员身份运行”选项。

如果我尝试在同一配置文件下使用写字板执行相同的操作,我会收到预期的错误。

有什么想法吗?

该应用程序正在使用 Ole 结构化存储来保存并包含以下清单(如果有帮助的话)。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity type="win32" name="DelphiApplication" version="1.0.0.0" processorArchitecture="*"/>
<dependency>
<dependentAssembly>
  <assemblyIdentity
    type="win32"
    name="Microsoft.Windows.Common-Controls"
    version="6.0.0.0"
    publicKeyToken="6595b64144ccf1df"
    language="*"
    processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
            <security>
                    <requestedPrivileges>
                            <requestedExecutionLevel
                                   level="asInvoker"
                                   uiAccess="false"/>
                    </requestedPrivileges>
            </security>
    </trustInfo>
</assembly>

编辑:要明确的是,我的应用程序默认情况下不会将任何内容保存到这些位置。我通过标准文件保存对话框选择这些位置。

Update

我发现为什么我的应用程序被视为遗留应用程序,尽管包含上述清单。事实证明,还包括第二个清单,其中没有“trustInfo”部分。我已经删除了第二个清单,现在一切都很好。

感谢所有的帮助


这是UAC的一个功能,可以让旧的应用程序兼容Vista。它将任何写入用户缺乏本地文件夹权限的系统文件夹的请求重定向。

它们存储在当前用户配置文件下的“AppData\Local\VirtualStore”文件夹下。 有一个组策略设置可以禁用此功能:“将文件和注册表写入失败虚拟化到每个用户位置”

此文件和注册表虚拟化功能旨在允许旧应用程序在 Windows Vista 标准用户帐户下运行。旧应用程序被定义为没有特定 Vista 清单的 32 位可执行文件。如果您提供 Vista 清单来将您的应用程序装饰为 Vista 兼容,则此虚拟化设置不会影响您的应用程序(如写字板示例中所示)

马克·鲁西诺维奇(Mark Russinovich)对此有一篇很棒的文章:Windows Vista 用户帐户控制内部

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

为什么我的应用程序允许我将文件保存到 Vista 中的 Windows 和 System32 文件夹? 的相关文章

  • 如果部署目标 < 基础 sdk,如何检查是否使用了不可用的方法?

    我想知道当部署目标低于基础 SDK 时 您如何检查代码是否不调用不可用的方法 可以在 SDK 等于部署目标的设备上运行应用程序 但我搜索一种更 自动 的方式 任何想法 问候 昆汀 最简单的方法是使用 IPHONE OS VERSION MA
  • 找不到文件异常..但它就在那里

    嘿 这将是那些愚蠢的问题之一 我试图在本地系统上获取一个文件 但我不断收到FileNotFoundException thrown 请有人纠正我 if File Exists C logs hw healthways prod 2009 0
  • 用 C 更快地读取文件

    嗯 我想知道是否有一种比使用 fscanf 更快地读取文件的方法 例如假设我有这个文本 4 55 k 52 o 24 l 523 i 首先 我想读取第一个数字 它给出了接下来的行数 令这个数称为N N 之后 我想读取 N 行 其中有一个整数
  • 以标准用户身份打开默认浏览器 (C++)

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 当 ShellExecute 打开浏览器时 它似乎读取 本地管理员 配置文件而不是用户
  • 无法更新 .mdf 数据库,因为该数据库是只读的(Windows 应用程序)

    我使用 C 创建了一个数据库 Windows 应用程序 我的应用程序在 Windows XP 上成功运行 但在 Vista 或 Windows 7 系统上无法正确执行 我的应用程序显示类似以下内容的消息 无法更新 mdf 数据库 因为该数据
  • 从 Java 应用程序读取的文件是否会调用系统调用?

    我的理解是 请求文件系统路径 例如 aFile 的用户应用程序将调用文件系统并获取所请求文件的虚拟地址 然后应用程序将尝试以该地址作为参数 即作为 CPU 指令 进行读 写操作 执行读取命令时 内存管理单元会将该地址转换为物理地址 并查看页
  • 如何检测Windows版本是否合法? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我对获取版本信息不感兴趣 我想做的就是确保我的应用程序只能在合法版本的 Windows 上运行 而不是在盗版版本上运行 Windows 使
  • PHP将数据写入文件中间而不重写文件的最佳方法是什么

    我正在 php 1GB 中处理大型文本文件 我正在使用 file get contents file txt NULL NULL 100000000 100 要从文件中间获取数据 但如果我想将文件中的数据更改为与原始数据不同的更改 我将不得
  • 对 os.listdir 文件进行排序 Python

    如果已下载数年的数据 这些数据存储在具有以下命名约定的文件中 year day dat 例如 名为 2014 1 dat 的文件包含 2014 年 1 月 1 日的数据 我需要按天排序读取这些数据文件 2014 1 dat 2014 2 d
  • C++:获取器和设置器?

    我正在尝试编写一些代码来为以下数据的 ID 号 名字 姓氏 期中成绩和期末成绩创建 getter 和 setter 这些数据位于我正在编写的班级的文本文件中 10601 ANDRES HYUN 88 91 94 94 89 84 94 84
  • 使用 find - 删除除任何一个之外的所有文件/目录(在 Linux 中)

    如果我们想删除我们使用的所有文件和目录 rm rf 但是 如果我希望一次性删除除一个特定文件之外的所有文件和目录怎么办 有什么命令可以做到这一点吗 rm rf 可以轻松地一次性删除 甚至可以删除我最喜欢的文件 目录 提前致谢 find ht
  • 在 Ruby 中创建一个空文件:相当于“touch”?

    创建一个的最佳方式是什么emptyRuby 中的文件 类似于 Unix 命令的东西 touch https en wikipedia org wiki Touch 28Unix 29 touch file txt FileUtils tou
  • 如何在golang中创建一个充满“000000...”数据的10MB文件?

    我打算在日志或磁盘队列等系统中使用 fdatasync 首先是在 ext4 等文件系统中创建一个带有 000000 的 10MB 文件 但我不知道如何正确地做到这一点 jnml fsc r630 src tmp SO 16797380 ls
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 来自 file_descriptor_source (boost::iostreams) 或文件的 istream

    我需要为我的程序输入做这样的事情 stream input if decompressed input open filepath else file descriptor popen decompressor filepath r inp
  • 如何通过单击图像预览上的“x”从文件输入中删除图像?

    我目前有一个文件输入 一旦用户上传图像 就会显示图像预览 在图像预览上 有一个 x 可以从列表中删除图像预览 单击此 x 后 有什么方法可以从输入中的文件集中删除图像吗
  • PHP 中 file、file_get_contents 和 fopen 之间的区别

    我是 PHP 新手 我不太确定 两者之间有什么区别file file get contents and fopen 函数 什么时候应该使用其中一个而不是另一个 前两个 file http www php net manual en func
  • 从目录中读取所有文件内容 - php

    这实际上是一个简单的任务 我想显示指定文件夹中所有文件的内容 我正在传递目录名称 echo a href row qname a 在第二页上 我正在迭代目录内容 while entryname readdir myDirectory if
  • 如何分块加载 Pickle 文件?

    是否有任何选项可以批量加载 pickle 文件 我知道我们可以将数据保存在 CSV 中并分块加载 但除了 CSV 之外 是否有任何选项可以批量加载 pickle 文件或任何 python 本机文件 基于Python pickle 的文档 h

随机推荐

  • 如何显示“您确定要离开此页面吗?”何时进行更改?

    在 stackoverflow 中 如果您开始进行更改 然后尝试离开该页面 则会出现一个 javascript 确认按钮并询问 您确定要离开该页面吗 布利巴拉布洛 以前有人实施过这个吗 我如何跟踪已提交的更改 我相信我自己可以做到这一点 我
  • android 将 XML 视图转换为位图而不显示它

    我正在尝试设置我的地图集群的视图 我正在从 XML 扩充视图并根据簇大小设置文本 并且我想显示该视图 在下面的代码中我得到一个空位图作为回报 private Bitmap createClusterBitmap int clusterSiz
  • 在 Vaadin 7 中调用 VaadinSession getAttribute 时需要锁定

    我知道调用 setAttribute link 但是 getAttribute 呢 它是否正确 public Object getMyAttribute return VaadinSession getCurrent getAttribut
  • 为什么内核中不使用SIMD指令?

    我在内核中找不到太多 SIMD 指令 如 SSE AVX 的使用 除了一处用于加速 RAID6 奇偶校验计算的地方 Q1 有什么具体原因或者只是缺乏用例吗 Q2 如果我想在设备驱动程序中使用 SIMD 指令 今天需要做什么 Q3 将像 IS
  • Paypal PHP REST 服务 - “访问令牌没有所需的范围”

    我正在使用 Paypal REST SDK 用 PHP 进行编码 我已将我的 Sandbox 帐户设置为使用澳元 在意识到我的初始交易是美元并且交易被保留后 我解决了这个问题 使用修改后的代码 我尝试创建付款 我假设我会返回一个 URL 该
  • Delphi/Android在哪里搜索本地语言库?

    我想向 Delphi Android 应用程序添加 MIDI 功能 MIDI 可通过 SoniVox 库使用 该库可通过 Android NDK 访问 可以找到该驱动程序的示例here 该驱动程序是用 C 编写的 使用 NDK 可以创建一个
  • Azure有像AWS的CloudFormation一样的IaC工具吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我将 GCP 与 AWS 进行了比较 两者的 IaC 工具都是 Deploy Manager 和 CloudFormation 蔚蓝呢 Azure有
  • 有没有办法将 Python 程序编译为二进制并将其与 Scratch Dockerfile 一起使用?

    我最近一直在研究 docker 镜像 我看见这个泊坞窗文档关于使用FROM scratch 我想看看我能走多远 只是为了好玩 我用Python编程 该文档说将示例 C 程序编译为二进制文件 将其复制到容器中 然后运行它 在容器中 我无法运行
  • 删除 .php 扩展名(明确编写)以获得友好的 URL [关闭]

    Closed 这个问题是无关 目前不接受答案 htaccess 删除我网站文件的 php 扩展名 RewriteEngine on RewriteBase RewriteCond SCRIPT FILENAME d RewriteCond
  • 非详尽模式的更好例外情况

    当 GHCi 在运行时发现调用生成的值与函数的模式匹配不匹配时 是否有办法让 GHCi 生成更好的异常消息 它目前给出了产生非详尽模式匹配的函数的行号 虽然有时很有帮助 但确实需要一轮调试 有时我觉得一遍又一遍地做同一组事情 因此 在尝试制
  • 如何在 Django 模板中获取我的网站的域名?

    如何从 Django 模板中获取当前站点的域名 我尝试查看标签和过滤器 但什么也没有 如果您想要实际的 HTTP 主机标头 请参阅 Daniel Roseman 对 Phsiao 答案的评论 另一种选择是如果您使用的是贡献站点框架 您可以为
  • 删除 Tkinter 窗口上的 TK 图标

    如何从窗口标题栏中删除 tkinter 图标 在 Windows 上 步骤1 使用图标编辑器或类似网站创建透明图标RW设计师 另存为transparent ico 第二步 from tkinter import tk Tk tk iconb
  • 获取 MVC 捆绑包查询字符串

    是否可以在 ASP NET MVC 中检测捆绑查询字符串 例如 如果我有以下捆绑请求 css bundles mybundle css v 4Z9jKRKGzlz D5dJi5VZtpy4QJep62o6A xNjSBmKwU1 是否可以提
  • 为现有表添加自增ID?

    我有一个预先存在的表 其中包含 fname lname email password 和 ip 但现在我想要一个自动增量列 但是 当我输入 ALTER TABLE users ADD id int NOT NULL AUTO INCREME
  • 不带参数解释的 Printf

    我知道如果 printf 没有给出任何参数 它会输出一个意外的值 Example include
  • 如何使用命令行安装较旧的 PhoneGap 版本?

    如何安装旧版本PhoneGap使用命令行 我熟悉以下安装命令 sudo npm install g phonegap 但是 这只会安装最新版本 npm install g phonegap
  • Java 一个方法中有两个可变参数

    Java 有没有办法创建一个需要两个不同的可变参数的方法 我知道 对于相同的对象类型 这是不可能的 因为编译器不知道从哪里开始或结束 但为什么两种不同的对象类型也不可能呢 例如 public void doSomething String
  • 我可以使用 grep 提取 CSV 文件的单列吗?

    我正在努力解决我必须尽快解决的问题 我有一个 csv 文件 字段用 分隔 我被要求使用 grep 创建一个 shell 命令 使用正则表达式仅列出第三列 我不能使用剪切 这是一种练习 我的文件是这样的 1 Evan Bell 39 Obig
  • CLR 类型到 EDM 类型的映射对于 EF 6 和 5 不明确?

    请问有人可以帮我解决这个错误吗 指定的架构无效 错误 CLR 类型到 EDM 类型的映射不明确 因为多个 CLR 类型与 EDM 类型 City DAL 匹配 以前发现的 CLR 类型 CeossDAL City DAL 新发现的 CLR
  • 为什么我的应用程序允许我将文件保存到 Vista 中的 Windows 和 System32 文件夹?

    我有一个用 Delphi 7 编写的应用程序 不需要管理员权限即可运行 由于某种原因 我能够从应用程序内将文件保存到 c windows 和 c windows system32 即使应用程序未请求 UAC 提升 我以管理员身份登录UAC已