我有一个用Delphi 7编写的应用程序,它不需要管理员权限来运行。为什么我的应用程序允许我将文件保存到Vista中的Windows和System32文件夹中?
出于某种原因,我可以从应用程序内将文件保存到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>
编辑:为了清楚我的应用程序默认情况下不保存任何内容到这些位置。我通过标准文件保存对话框选择这些位置。
更新
我发现为什么我的申请被遗留尽管包括上述清单正在接受治疗。事实证明,第二个清单也被包括在内,没有'trustInfo'部分。我已经删除了第二张清单,现在一切正常。
感谢所有帮助
我以管理员身份登录。我没有使用'作为管理员运行'选项。将更新以澄清 – Jamie 2008-12-16 10:06:41