10

在我的Silverlight应用程序中,我使用常规的SaveFileDialog来提示用户保存某个文件。在某些计算机上使用虚拟化路径的临时目录

的问题是,在一些Windows 7的计算机,如果用户在保护模式下使用IE浏览器,并尝试将其保存到例如在桌面上,用于保存路径结束这样的:

C:\Users\<user>\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Virtualized\C\Users\<user>\Desktop 

有谁知道我可以在哪里找到标志或值,表示该路径将在Windows上用来代替常规路径?

谢谢

+0

您是否尝试过使用Path.GetTempPath方法? – 2013-03-05 14:43:31

+0

你是否在“Out of Browser”模式下运行你的应用程序? – Jehof 2013-03-05 14:45:37

+0

假设当IE处于保护模式时,Path总是看起来像这样,如果IE通过Interop处于ProtectionMode中,您可以尝试检测该路径,而此方法[IEIsProtectedModeProcess]获取更多信息,请查看此链接http://www.codeproject.com/Articles/18866/A-Developer-s-Survival-Guide-to-IE-Protected-Mode#whenispmon(不幸的是这都是C++) – makim 2013-03-05 15:11:09

回答

6

有点研究I'm的恐怕没有标志或值,指示虚拟化的路径后,所以......

我知道这有点位的俄罗斯,但假设这是静态

\微软\的Windows \ Temporary Internet Files文件\虚拟化\

你可以做这样的事情到c赫克如果路径指向虚拟文件夹

public static bool IsPathVirtualized(string path) 
{ 
     bool isVirtualized = false; 
     string pathToVirtualizedUserFolder = Path.Combine 
     (
      Environment.SpecialFolder.LocalApplicationData + 
      @"Microsoft\Windows\Temporary Internet Files\Virtualized\" 
     ); 

     if(path.StartsWith(pathToVirtualizedUserFolder)) 
     { 
      isVirtualized = true; 
     } 
     return isVirtualized; 
} 
+0

谢谢,类似我做的事情,它的工作原理,但我正在寻找更好的解决方案,不喜欢字符串比较... – Marko 2013-03-06 14:32:10