2008年05月27日

VistaでDrag&Dropできない

  
エクスプローラからファイルをドラッグ&ドロップできるWindowsFormアプリケーションを作ってみたのですが、どうしても上手くいきません。
前に作ったときには上手くいったのになぜ?
プロパティ設定に誤りがあるんだろうか?それともVisual Studio 2008では、何か仕様変更があったのか...

1時間くらい悩みましたが、答えはここ「Vista上のVS2005 C# Windowsアプリのドラッグ&ドロップ機能での注意点」にありました


Vistaの場合、Visual Studioを理者権限で起動させているのですが、その場合、Visual Studio から起動されるアプリケーションも管理者権限で動作することになります。
一方エクスプローラは、ユーザ権限で動作しているらしく、権限の高い管理者権限で動作しているアプリへは、ドラッグ&ドロップできないらしいです。

作成したプログラムをVisual Studioからではなく、エクスプローラから起動したら、ちゃんとできました。

試しに、このプログラムを管理者権限で動作させてみたら、やはり、ドラッグ&ドロップできませんでした。
なんで、こんな仕様になってるんでしょう?


この記事へのコメント
AllowDropのプロパティがfalseになってたりはしませんか?
Posted by 外してたらすみません at 2008年05月27日 22:47
ユーザ権限と管理者権限ではコンテキストが違うからです。
同じウィンドウ上に表示されてはいますが、デスクトップは別と考えてもらっても構いません。
substの設定なども別になります。
Posted by 中博俊 at 2008年05月27日 22:49
>AllowDropのプロパティがfalseになってたりはしませんか?

もちろん、trueにしてますよ。
Posted by Gushwell at 2008年05月27日 23:02
中さん
コメントありがとうございます。
なるほど、デスクトップが別なんですね。
このあたりは、僕のニガテ分野ですね。勉強します。

substって、subst,exeコマンドのことですか?
今度時間があるときにでも、試してみます。


Posted by Gushwell at 2008年05月27日 23:06
すみません。リンク先確認してませんでした。
Posted by 外してたらすみません at 2008年05月27日 23:10
デスクトップのエクスプローラを管理者権限で動かせばできそうな気がするんだけれど、それってできるのかな。
Posted by かるあ at 2008年05月28日 00:43
かるあさん
どうなんでしょう?
やり方がわかりません。
エクスプローラの実行ファイルのプロパティを開いてみましたが、
グレーアウトされていて、変更できませんでした。
Posted by Gushwell at 2008年05月28日 12:18
記事をご覧頂いたようでありがとうございます。

旬を逃したコメントですが、

>デスクトップのエクスプローラを管理者権限で動かせばできそうな気がするんだけれど、それってできるのかな。

なるほど、確かにそうですね。
スタートメニュー > アクセサリ > エクスプローラ を右クリックして「管理者として実行」すれば管理者権限になるので、その方がテストするときには楽そうですね。
今後はそのようにしてD&Dのテストやってみます ^^
Posted by laborat at 2008年08月04日 13:35
laboratさん
laboratのBlogで助かりました。再度ありがとうございました。

なるほど、スタートメニューから起動すればいいのか!。
今使っているPCが、XPなので、明日Vistaで試してみます。
Posted by Gushwell at 2008年08月04日 20:51
> 今使っているPCが、XPなので、明日Vistaで試してみます。

やってみましたが、ダメみたいです。
うまくいきませんでした。

Posted by gushwell at 2008年08月05日 22:56
> やってみましたが、ダメみたいです。

あーすいません、私の説明不足ですね。
まず、エクスプローラーのオプション > 表示で「別プロセスでフォルダウィンドウを開く」にチェックが入っている状態にしてください。

これをチェックしないとすでにユーザー権限でプロセスが起動されてしまっているため、エクスプローラが管理者権限にならないようです。( ← 憶測ですが ^^;)

次に上記と同じ理由で、現在開いているエクスプローラを全て閉じてください。

上記の準備ができたら、今度は管理者として実行でエクスプローラを起動しなおしてください。(スタートメニューからでもいいですしexplorer.exeの右クリックメニューからでもOKです)

この方法で恐らくD&Dがうまくできるはずです(管理者権限 => 管理者権限)
私の環境では動いています。

ではではご参考まで ^^
Posted by laborat at 2008年08月07日 15:08
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51524023