2012-02-17 79 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