問題タブ [shell32]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 仮想ファイルはインターネット一時ファイルから開かれます
デスクトップをルートとする名前空間拡張を作成しました。拡張機能の主な目的は、構成可能なディレクトリのリストを表す ZIP ファイルの仮想リストを提供することです。ユーザーがこれらの項目のいずれかをクリックすると、関連するディレクトリの内容が所定の場所に圧縮され、結果の ZIP ファイルがキャッシュ フォルダーに保存されます。
これはすべて、小さな問題を除けばうまく機能します。Windows エクスプローラーに移動し、拡張機能を開き、アイテムをダブルクリックして、開いたファイルがキャッシュからのファイルであることを確認します。[正しい]
一方、[開く] ダイアログで開くと、開いたファイルは一時インターネット ファイル ディレクトリからのものです。[正しくない]
インターネット一時ファイルからではなく、キャッシュ フォルダーからファイルを開くには、[開く] ダイアログ (たとえば、notepad.exe を使用する場合) に対して何を変更する必要がありますか。IShellFolder::GetDisplayNameOf で修飾されたファイル名を常に送信しようとしましたが、うまくいきませんでした。
winapi - Windows上の任意のユーザーのCSIDL_LOCAL_APPDATAパスを取得します
(現在ログオンしているユーザーだけでなく)必要なCSIDL_LOCAL_APPDATA
ユーザー用に取得するWin32 / MFC APIはありますか?「domain\user」という形式のユーザーのリストがあり、そのパスのリストを取得したいとします。それは可能ですか?
windows - Windows サービス内での SHFileOperation の使用
可能ですが、Windows サービス内で SHFileOperation を使用するのは適切ですか? shell32.dll 内のこれらの SHxxx API 関数はすべて、ユーザー レベルのプログラムを念頭に置いて記述されているようです。SHFileOperation が GUI を表示しないと確信できますか?
windows - マネージド コードでシェルから Vista/Windows Search/propsys.dll プロパティを取得する
誰かがこれを行うことができましたか?IPropertyStore のマネージ ラッパー クラスを作成しようとしましたが、PROPVARIANT へのポインターを受け取るメソッド (IPropertyStore::GetValue) で AccessViolationExceptions を取得しています (マネージ バージョンで MarshalAs(UnmanagedType.Struct) 出力パラメーターとしてレンダリングされます) おそらく私の理解COM と相互運用性が不十分です --- PROPVARIANT 構造体宣言に問題があるかどうかはわかりません (現在、StructLayout.Sequential を使用し、バイトのシーケンスを宣言し、バイトを手動で操作して、さまざまな型の値を取得しています)ユニオンなど)、どのプロセスが何を所有しているか、または何か他のものをCOMが発行します。ユニオンに StructLayout.Explicit を使用するなど、他のさまざまなバージョンの PROPVARIANT を試しましたが、何も機能しませんでした。IPropertyStore:: による PROPERTYKEY の取得
c# - P/shell32.dllのSHMultiFilePropertiesを呼び出す
P/Invokeはあまり得意ではありません。誰かが.NETで次のshell32.dll関数を宣言して使用する方法を教えてもらえますか?
http://msdn.microsoft.com/en-us/library/bb762230%28VS.85%29.aspxから:
これは、複数のファイルシステムオブジェクトのWindowsシェルのプロパティダイアログを表示するためのものです。
1つのファイルまたはフォルダーに対してSHObjectPropertiesを使用する方法はすでに理解しています。
誰か助けてもらえますか?
c++ - 「安全な」DLL インジェクション
あまり良い質問ではありません、すみません。
ファイルがエクスプローラーから開かれたときに警告する必要があるプログラムがあります (つまり、ShellExecute(A/W) が呼び出されます)。
残念ながら、Microsoft は、Vista 以降でこれらのイベントをフックできるようにする COM インターフェイス (IShellExecuteHook) を削除しました。これは、古いコードが変更によりクラッシュする可能性があるためと考えられます。この機能を再度有効にする回避策がありましたが、機能しなくなりました。
私はいくつかの調査を行いましたが、ShellExecute への呼び出しをキャッチする唯一の方法は、呼び出しを shell32.dll に再ルーティングすることです。現時点では、独自の DLL をエクスプローラー プロセスに挿入し、ShellExecute の IAT エントリを DLL のアドレス割り当てにコピーし、最後に ShellExecute の IAT エントリを関数を指すように変更することを検討しています。ファイルが開かれたプログラムを開き、以前にアドレスを保存した元の ShellExecute 関数にジャンプします。
ここでの私の最大の懸念はウイルス対策です。彼らは私がエクスプローラーに注入していることを気にしますか? 彼らは、私が IAT を変更していることを気にかけますか?
別の懸念は、これが安全かどうかです。エクスプローラーのセキュリティ特権が CreateRemoteThread を介したインジェクションを許可しないことは可能ですか (または可能性が高いですか)? もしそうなら、この注射を行うためのより良い方法はありますか?
一般的にこれを行うより良い方法はありますか?
編集: 将来これに遭遇する人のために、explorer.exe には shell32.dll の IAT がありません。ヘッダーがありますが、サンクはジャンク値でいっぱいなので、インポートされた関数のエントリを取得する方法はありません (私が知る限り)。
コード トンネリングがこれをフックする唯一の方法のようです。
.net - .NET での Shell32 の ExtractAssociatedIcon 関数の動作例が必要
Shell32.dll の ExtractAssociatedIcon 関数の実例が必要です。私はそれを機能させることができず、アイデアがありません。次のコードに別の目が必要です。フォームが読み込まれると、アイコンは Visual Studio アイコンに設定されますが、デフォルトのシステム アイコンしか表示されません。
修正済み
<MarshalAs(UnmanagedType.LPStr)>
が問題でした。あるべきではありLPTStr
ませんでしLPStr
た。
c++ - デバイスブラウジングの問題
私はファイルブラウジングソフトウェアを書いていますが、カメラやスマートフォンなどのすべてのポータブルデバイスで正しく動作するようにしたいと考えています。私のプログラムはサムネイルを表示するので、各ファイルの内容を読む必要があります。
今、私はいくつかの問題に直面しています:
両方のフォトカメラで、デバイスから1つのISteamのみを開くことができます。追加のストリームごとに、ERROR_BUSYエラーが発生します。いくつかのバックグラウンドスレッドでサムネイルを取得するため、これは不便です。
スマートフォンから複数のストリームを開くことはできますが、そのストリームを探すことはできません。回避策として、ストリーム全体を一時ファイルシステムの場所にコピーし、そこで処理する必要があります。
それは何に依存するのだろうか。デバイスファイルシステム?ドライバーの実装?または他に何か?
c# - C#Visual Studio 2008 system32.dllへの参照...どのように?
ごみ箱を読み取るためにいくつかのシェル関数を使用するため、参照system32/shell32.dllが必要です。「参照の追加->COM->Microsoft Shell ControlsandAutomatation」と「参照の追加->参照--->[system32/shell32.dllに直接移動]」を試しました。どちらもshell32参照を参照に追加します。 。しかし、プロパティを見ると、参照のパスは次のようになっていることがわかります: "C:\ Users \ Tim \ Documents \ Visual Studio 2008 \ Projects \ Wing \ FileWing \ obj \ Debug \ Interop.Shell32.dll" ..。。
この\obj\Debug\パスをインストーラーにデプロイしません。では、エンドユーザーのshell32.dllを直接参照するにはどうすればよいですか?方法はありますか?なぜVS2008はこの奇妙なパスを作成するのですか?このパスを変更して、この奇妙なサブフォルダーに入らないようにすることはできますか?
うーん。さて、PInvokeを再訪した後、私はそれを完全には理解していないと確信しています:-/
処理する必要のあるコードを説明しましょう。ごみ箱を掘り起こし、回収したいアイテムを探しています。これを行うためにPInvokeを介して戦わない方法はありますか?