我希望我的程序在试图在受保护位置创建文件(例如c: drive的根源)(例如:: FILE* FileHandle = fopen("\\file.txt", a))。相反,该文件在%appdata%下的虚拟商店中创建。

如何禁用该虚拟商店?

谢谢

编辑:要清楚,我并不是问如何规避安全性并在受保护的位置中创建文件。我希望文件创建失败,以便我可以告诉用户他是个白痴。

有帮助吗?

解决方案

您添加了一个应用清单。选择ASINVOKER,最高可用或需求数量。听起来您想要Asinvoker。

http://msdn.microsoft.com/en-us/library/bb756929.aspx:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="IsUserAdmin"
     type="win32"/> 
  <description>Description of your application</description> 
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>

其他提示

MSDN:

虚拟化仅启用:

  • 32位互动过程
  • 管理员可写的文件/文件夹和注册表键

虚拟化被禁用:

  • 64位进程
  • 非相互作用过程
  • 流行的过程
  • 内核模式呼叫者
  • 具有请求的executionlevel的可执行文件

正如亚当·马拉斯(Adam Maras)指出的那样,最好的选择是通过添加清单来在您的应用程序上设置请求的Executionlevel。 “ ASINVOKER”的请求ExecutionLevel将导致受保护位置的文件操作失败,而不是重定向到虚拟商店或提示高程。

这是一篇文章,展示了如何关闭虚拟化。

http://www.interworks.com/blogs/dsmith/2011/09/21/disabling-windows-7-virtual-store

缺点是:

- 从Windows 7开始ORB,进行本地安全策略进行搜索,然后选择它。

- 扩展本地策略,然后单击安全选项。在右窗格上,一直滚动到底部,您会找到一个称为“用户帐户控制:虚拟化文件和注册表写入失败到每个用户位置”的设置,请双击该设置并将其更改为禁用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top