通过"Open with"启动应用程序时写入临时目录



我的应用程序(用Visual C++2008编写)保存了一个扩展名为.xxx的文件(例如)。如果我用鼠标右键单击具有该扩展名的文件,选择"打开方式",然后选择我的应用程序,则任何将应用程序中的文件编程写入临时目录,甚至写入我打开的文件的目录的操作都会自动重定向(我认为是Windows)到C:\Windows\system32。当使用"文件">"打开"或双击文件在应用程序中打开文件时,不会发生这种行为。重定向到system32可能是在我从Visual C++6.0或Windows 7切换时开始的,我不知道是哪一个。该项目已经成功运行了13年。我试图通过提取文件的目录路径,通过"Open with"打开文件后,在代码中捕获当前工作目录,但它被更改为C:\windows\system32,这很令人恼火。甚至从GetTempPath获得的路径也更改为C:\windows\system32。我认为Windows安全性导致了这种情况的发生。有人知道这件事吗。

请仔细阅读GetTempPath函数的文档

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

所以有一个变化,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%system32 for shell starting…

相关内容

最新更新