2012-02-17 14 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を使用してパスを開くと、それもOKです。私のコードで何が問題になっていますか?ありがとう。

+0

Windows XPでは、問題のデバイスにWindowsポータブルデバイスドライバがインストールされていますか?それがなければ、これはXP上で動作しない最も簡単な理由です – Petesh

+0

しかし、なぜWindowsがこのパスを開くことができるのかわかりません。これはexploreとShellExecuteの違いです。 – user1216427

答えて

-2

ShellExecuteは古いもので、常にiffyです。代わりにこの方法を試してください。

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

申し訳ありませんが動作しません。 – user1216427

+2

「iffy」は「私はそれを使う方法を知らない」という別の言い方ですか?表示したコードは 'ShellExecute'を呼び出し、' explore'操作を指定することと基本的に同じです。 'ProcessStartInfo'はなぜ優れていますか?そして、CやC++アプリケーションからそれをどうやって使うのですか? –

+0

私はそれに答えると、C#とタグ付けされました。はい、私はそれを使用する方法を知っています、そしてもっと重要なのは、いつですか。私のコードはShellExecuteと同じではありません。私のコードとShellExecuteとの間に重要な違いがあります.ShellExecuteは、特に関連の問題を解決します。 C#を使用していない場合、CreateProcessを使用してそのように扱うことができます。 –

関連する問題