通过“打开方式”启动应用程序时写入临时目录

时间:2013-07-16 13:17:50

标签: windows visual-c++ system32

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

1 个答案:

答案 0 :(得分:0)

请仔细阅读GetTempPath功能

的文档
  1. TMP环境变量指定的路径。
  2. TEMP环境变量指定的路径。
  3. USERPROFILE环境变量指定的路径。
  4. Windows目录
  5. 所以有一个变化,Windows目录被选为临时路径...

    另外,请验证您的应用程序是否具有有效的Vista清单!如果这不是exresnd,那么您的应用程序将发生多次重定向和虚拟化:

    <?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%\system32用于shell启动...