Windows Server 2008 のメモ帳でファイルをドラッグ アンド ドロップして編集できないのはなぜですか?

Windows Server 2008 のメモ帳でファイルをドラッグ アンド ドロップして編集できないのはなぜですか?

メモ帳を実行すると、ファイルをドラッグ アンド ドロップして開くことができますが、ファイルを保存できません。メモ帳を管理者特権で実行してファイルを保存すると、ファイルをドラッグ アンド ドロップして開くことができなくなります。

管理者権限のないプログラムから管理者権限のあるプログラムにファイルをドラッグするとセキュリティ上のリスクがあることは理解していますが、エクスプローラーも管理者権限で実行しても、管理者権限のあるメモ帳にドラッグ アンド ドロップすることはできません。

なぜ OS は 2 つの昇格されたプログラムがドラッグ アンド ドロップで情報を交換することを許可しないのでしょうか? これについては、Windows Server 2003 の使用に戻ることを真剣に検討しています。

編集: 2 つの昇格されたプログラムが情報を交換できるようです。エクスプローラーは昇格に失敗していただけです。エクスプローラーが昇格されると、ファイルをエクスプローラーから昇格されたメモ帳にドラッグできます。

答え1

エクスプローラから昇格したメモ帳ウィンドウに「ドラッグアンドドロップ」できないのは、ユーザーインターフェイスの権限分離の現れです(ユーピーアイ) 機能。これは、権限の低いアプリケーションが任意の「メッセージ」(オペレーティングシステム/アプリケーションのプロセス間通信の意味で)を別の権限の高いアプリケーションに送信するのを防ぐために OS に用意されています。権限の高いアプリケーションがメッセージを不適切に処理した場合、権限の低いアプリケーションが権限の高いアプリケーションに代わって任意のコードを実行させる可能性があります (このようなタイプの攻撃は、粉砕する2002 年に当時の Windows バージョンでの攻撃方法を説明した論文でこのように名付けられた攻撃。

これは、低い「整合性レベル」(権限なし) で実行されているアプリケーションと、高い整合性レベル (昇格) で実行されているアプリケーションの間の「ファイアウォール」のようなものだと考えることができます。

もし、あんたが本当にWindows エクスプローラーを昇格したい場合は、次の操作を行います。

  • 管理者権限でコマンドプロンプトを起動し、開いたままにしておきます。
  • タスク マネージャーを起動し、「プロセス」タブに移動して「すべてのユーザーのプロセスを表示」をクリックして昇格します。
  • タスク マネージャーを使用して、Explorer.Exe のすべてのインスタンスを強調表示して終了します。
  • まだ開いている管理者特権のコマンド プロンプト ウィンドウから、「Explorer」と入力し、<ENTER> キーを押します。

エクスプローラーは管理者特権で再度開きます。

答え2

UAC を無効にしたくない場合は、UIPI (ユーザー インターフェイス特権分離) を無効にしてみてください。

regedit を開いて次の場所に移動します:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

DWORD (32-bit) Valueという新しい を追加しEnableUIPI、 に設定します0

マシンを再起動して、期待どおりに動作するかどうかを確認します。

答え3

これは Vista での問題でしたが、おそらく Server 2008 でも同じ問題が起こっていると思います。基本的に、エクスプローラーを管理者特権で実行することはできません。セキュリティ オプションを使用して実行できますし、そのようにすると機能するように見えますが、実際には標準の (管理者特権ではない) エクスプローラー ウィンドウが表示されるため、問題が発生します。

過去に私が使用しなければならなかった回避策は、これも昇格されたメモ帳セッションでエクスプローラー ウィンドウとして保存を使用するか (これも昇格される)、昇格されたコマンド プロンプトを使用してファイルを作成することでしたが、明らかに、これらのいずれもドラッグ アンド ドロップの問題を解決しません。これはかなりひどいバグで、しばらく前から存在していますが、なぜ修正されずにエクスプローラーの昇格されたインスタンスを実行できないのかわかりません。

答え4

推測ですが、ドラッグ アンド ドロップに必要な詳細をマーシャリングするコードは、UI の残りの部分 (エクスプローラーを含む) とともに非昇格コンテキストで実行されているため、2 つのプロセス間のパイプ情報にアクセスできないと考えられます。

関連情報