2011-07-12 12 views
5

現在、カスタムのシェル名前空間拡張(「サブフォルダ」と「ファイル」を含む仮想フォルダを表示するため)を作成しようとしていますが、これは実際には階層ツリーリモートサービスからの構造)。シェルの名前空間拡張がWindows 7で読み込まれない

拡張子はC#で書かれていますが、これは悪い考えでしたが、.NET 4では.NETランタイムの異なるバージョンが同じプロセス内に共存する可能性が導入されて以来、制限はもはや問題ではありませんでした。

これまでWindows XPでは豊富な例とリファレンスをウェブ上で利用できるようになっていますが、Windows 7で試してみると(まだVistaでは試していないので、そこで動作するかどうかは分かりません)、拡張機能はロードされません。私のデバッグログの出力によれば、それは正常に登録されますが、Windowsエクスプローラウィンドウを開くと、COMインターフェイスへの通常の呼び出しは発生しません(通常はIPersistFolder :: Initializeで始まります)。実際には、クラスコンストラクタも呼び出されていません。どのように.NETでそれを検出するかわからないので、インタフェースが(成功しているかどうか)照会されているかどうかわかりません。だから、基本的には、何かが間違っているかもしれないという有用な情報を記録する機会がなくても失敗するため、手がかりはありません。

誰かが問題の原因を知りましたか? Windows XPとは対照的に、Windows 7には、私が知っておくべきであるシェルの名前空間拡張を扱う際に考慮する必要のある特質がありますか?さらに詳しい情報が必要な場合は、質問してもらえますか(私はここでコード全体を貼り付けることを誰も認めないと確信していますので、私は簡潔にしています。単に)...これらはどれ

+2

Um ...拡張は32ビットとしてコンパイルされ、Windows 7は64ビットですか? – GSerg

+0

いいえ、32ビットのWin 7です。私は解決策が簡単だったらいいと思っています... –

+0

これはあなたの質問に答えませんが、.NETはShell Namespace Extensionsではサポートされていませんhttp://msdn.microsoft.com/en-us/library/windows/desktop/dd758089 v = vs.85).aspx。 –

答えて

0

を知らないそれは以下の理由になります

  1. あなたの名前空間には、ロードに失敗する可能性のある依存関係を持っていますか?

  2. 登録は正常に行われましたか?適切なエントリが作成された場合は、実際にレジストリをチェックしましたか? UACが有効な場合は、昇格された権限が必要な場合があります。このような複雑な獣を自分で開発することの代替として


EZNamespaceExtensionsの使用を検討 - それは非常に簡単です、あなたはあなたのNSE-特定の機能を提供することに焦点を当てることができます。

免責事項:私たちはEZNamespaceExtensionsの開発者です。

+0

レジストリエントリはすべて正常に見えます。依存関係に関しては、.NET 4ランタイム(もちろんインストールされている)以外は何も使用していません。残念ながら、とにかく必要なものがロードされているのかロードされていないのかを判断する方法はわかりません。ところで、システムイベントログには何もヒントがありません。私は霧の中で目がくらんでいるように感じます... –

+0

EZNamespaceExtension.NETに大きな問題があります。それは長い間更新されていません。 LogicNPはEZNamespaceExtension.NETへの関心を失ったようだ。2010年以来、いくつかの新しい機能がリリースされていないからだ.Net 4はサポートされず、Windows 8のリボンツールバーはサポートされていない。 – tronda

+0

新しいメジャーバージョン(必要性はありません)はありませんでしたが、時々マイナーアップデートのために新しいビルドを作成しています。 .Net 4.0:やはり真実ではありません - 実際には、.Net 4.0のサイドバイサイドランタイムのサポートにより、.NETでの開発がより簡単になりました! Win8リボン:MSはリボン統合を行うAPIを文書化していません。関連ドキュメントへのリンクがある場合は、この機能を追加できるように共有してください。 – logicnp

3

私はちょうど今、非常によく似たケースがあった:

  • を私は右の場所(私の場合、「マイコンピュータ」内)、アイコン、およびすべての私のシェル拡張を見ました。
  • まだ、私のCOMクラス(私はプロセスモニターをチェックしました)ではインスタンシエーションが行われておらず、IPersistFolder :: Initializeの呼び出しもありませんでした。

私はATLと64ビットを使用していましたので、.NETは私の問題ではないことが分かっていました。20000000が

(それは十分ではありません。 [HKEY_CLASSES_ROOT \ CLSIDのの\ {あなたのCLSID} \ ShellFolder] "属性" = DWORD:

は、問題は、私は、レジストリに次の値を持っていなかったが判明しますキーまたは値が存在する - 開始する何かを得るためには、(少なくとも)この特定の属性値を持つ必要があります)。

を追加したら、すべてのexplorer.exeプロセスを終了し、もう一度(タスクマネージャを使用して)を開始する必要があります。私はこれもあなたの問題を解決することを願っています。

関連する問題