1

外部ファイルを (Windows ファイル エクスプローラーから) コントロールにドロップしようとしていますListView。以前にこれを行ったことがありますが、イベントを発生させることができないようです。

私の手順は次のとおりです。

  • ListView コントロールを作成する
  • View プロパティを次のように設定します。3 - lvwReport
  • OLEDropMode プロパティを1 -ccOLEDropManual

私がしなければならないことはそれだけだと思っていましたが、私のListView1_OLEDragDropイベントは発生しません。

念のため、ListView にいくつかの項目を設定しました。

と で を設定しようとしEffect = vbDropEffectCopyましListView1_OLEDragOverListView1_OLEGiveFeedbackが、これも効果がないようです (これはカーソルを変更しません)。

注: コントロールの外にドラッグするときに StartDrag イベントを発生させることができます

これがWindows 7でも機能することを誰かが確認できますか?

4

2 に答える 2

1

これはUIPI(User Interface Privilege Isolation)のようです。これは、特権の低いアプリケーションが特権の高いアプリケーションとインターフェイスできないようにする新しいセキュリティ機能です。これは、主にUI自動化アプリケーションを可能にするためにバイパスできます。3つのことをバイパスするには、次のことを行う必要があります。

1. pfxファイルを作成し、信頼されたルート認証局としてインポートします。

pfxファイルを作成するには、Opensslをダウンロードし、コマンドプロンプトから次のコマンドを実行します。

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

それで、

openssl pkcs12 -export -out mycert.pfx -in mycert.pem -name "My Certificate"

次に、証明書をインポートします。 証明書ストアを選択します

2.コマンドプロンプトに次のように入力して、VisualStudioに付属のsigntoolを使用して証明書を使用してプログラムに署名します。

signtool sign /t http://timestamp.digicert.com /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe"

3. exeのマニフェストファイルに、UIaccess定義をtrueに設定したtrustInfoセクションを含めます。Make My Manifestを使用してこれを行いました:

うーん

これで、アプリはUIPIをバイパスできるはずですが、「C:\ Program Files \ "」、「C:\ Windows \"、またはいずれかのサブディレクトリなどの安全な場所から実行した場合のみです。

または、UACを無効にすることもできます。

于 2013-03-05T15:48:13.400 に答える
0

管理者として実行している場合、ListViewへのドラッグアンドドロップは機能しないようです。

  • IDE(管理者として実行するように設定されている)でこれを試してみると、機能しません。
  • コンパイルされたexeを使用すると機能しますが、コンパイルされたexeを管理者として実行(右クリックRun As Admin)すると機能しません。

なぜうまくいかないのかわかりませんが

于 2013-03-05T12:22:07.783 に答える