0

我的应用程序(用 Visual C++ 2008 编写)保存了一个扩展名为 .xxx 的文件(例如)。如果我右键单击具有该扩展名的文件,选择“打开方式”,然后选择我的应用程序,任何以编程方式写入我的应用程序内的文件到临时目录甚至是我打开的文件的目录都会自动重定向(我假设由 Windows)到 C:\windows\system32。当使用文件 > 打开或双击文件在应用程序内打开文件时,不会发生此行为。这种对 system32 的重定向可能是在我从 Visual C++ 6.0 或 Windows 7 切换时开始的,我不知道是哪个。该计划已成功运行 13 年。通过“打开方式”打开文件后,我尝试在代码中捕获当前工作目录 通过提取文件的目录路径,但它令人讨厌地更改为 C:\windows\system32。甚至从 GetTempPath 获得的路径也更改为 C:\windows\system32。我假设 Windows 安全导致这种情况发生。有人对这个有了解吗。

4

1 回答 1

0

请仔细阅读GetTempPath函数的文档

  1. TMP 环境变量指定的路径。
  2. TEMP 环境变量指定的路径。
  3. USERPROFILE 环境变量指定的路径。
  4. 视窗目录

所以有一个变化,windows目录被选为临时路径......

另外,请确认您的应用程序具有有效的 Vista 清单!如果这不存在,那么您的应用程序将发生几次重定向和虚拟化:

<?xmlversion="1.0" encoding="utf-8" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

还是您在谈论当前的工作目录?当前的工作目录主要是 "% SYSTEMROOT%\system32for shell-starting...

于 2013-07-16T16:16:53.783 回答