2012-02-17 82 views
0

我有路径 ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\\\\?\\usb#vid_12d1&pid_1052&mi_00#6&eb604e2&1&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33},我用ShellExecute打开它就像这样:ShellExecute无法在Windows XP中打开特殊文件夹?

//lp is the path above 
ShellExecute(NULL, L"open", lp, NULL, NULL, SW_SHOWNORMAL); 

我在Windows XP中得到了一个错误ERROR_NO_ASSOCIATION,我却用它在Win7,它是完美的。

那么为什么ShellExecute工作在XP?如果我使用Windows XP exeplorer打开路径,那也可以,所以我的代码有什么问题?谢谢。

+0

在Windows XP上是否存在针对有问题的设备安装的Windows便携设备驱动程序?如果没有,那么这将是它不工作在XP上的最简单的原因 – Petesh 2012-02-17 17:28:42

+0

但我也不知道为什么Windows探索可以打开这条路,探索和ShellExecute有什么区别。 – user1216427 2012-02-18 14:04:22

回答

-2

ShellExecute是有点老,总是iffy。改为尝试这种方式。

ProcessStartInfo info = new ProcessStartInfo(); 
info.FileName = "explorer.exe"; 
info.Arguments = lp; 
Process.Start(info); 
+0

对不起,它不起作用。 – user1216427 2012-02-17 17:23:16

+2

“iffy”是另一种说法:“我不知道如何使用它”?你所显示的代码基本上与调用'ShellExecute'并指定'explore'操作相同。为什么'ProcessStartInfo'更好?那么你应该如何在C或C++应用程序中使用它? – 2012-02-17 17:23:58

+0

当我回答它时,它被标记为C#。是的,我知道如何使用它,更重要的是什么时候使用它。我的代码与ShellExecute不同,我的代码和ShellExecute之间有一个重要的区别,它专门解决关联问题。所以如果事实证明他没有使用C#,那么他可以使用CreateProcess并以这种方式解决它。 – 2012-02-17 18:09:45

相关问题