Windowsユーザーのログイン後、Windowsデスクトップが表示される前に、C#アプリケーションをロードしたいと思います。現在、アプリケーションの起動パスをレジストリ実行キーに追加しました。アプリケーションは正しく読み込まれますが、Windows Windowsデスクトップが表示され[2秒]、アプリケーションが実行されます
ノート:
私のアプリケーションはwinapiを使用して別のデスクトップを作成しますが、それを実行しているアプリケーションはデスクトップを一時的に非表示にします。
これは実際には不可能です。Windowsは、ユーザーがログインした直後にデスクトップを起動してエクスプローラーを応答させるために非常に懸命に機能します。これは、ユーザーにとって最も重要なことです。
あなたの目標は高貴かもしれませんが、ユーザーが望んでいるものとは相容れません。したがって、一般的に、Windowsの動作(特にWin-7)とは相容れません。
早期に実行する必要があり、ユーザーと対話する必要のないソフトウェアがある場合は、サービスが最適です。Vista以降のWindowsシステムでは、サービスがユーザーと対話する方法がないことに注意することが重要です。たとえば、独自のグラフィカルユーザーインターフェイスを持つことはできません。UIを備えたサービスは本質的に安全ではありません。
ソフトウェアをパーティション分割する1つの方法は、サービスにいくつかのものを配置し、その上にthinkUIレイヤーを配置することです。COMとローカルRPCは、サービスとUIレイヤー間の通信に適しています。
コンポーネントの起動が遅くなるのを防ぐために、ここで作業を行う必要があることに注意してください。アプリケーションの動作が悪いことは、ブートパスの最大の問題の1つです。これは、 WindowsPerformanceToolkitを使用して調べることができます
可能だと思いますが、実際には多くの余分な作業が必要です。Windows シェルを独自のコードに置き換えることもできますが、その時点で、ユーザーが操作する UI について単独で責任を負うことになります。
あなたのコードが「ちょうどいい」ものではない場合、Windows のインストールが使用できなくなる可能性があり、ユーザーがそれを高く評価するかどうかはわかりません。
また、通常は直感的に Windows マシンで使用できると予想される機能が、シェルの一部であり、アクセスできなくなる可能性があることにも注意してください。詳細については、http://en.wikipedia.org/wiki/Windows_shell_replacementを開始点として試してください。
補遺:
これを実現するために技術的に実際に何が関与しているかについて、私自身は漠然とした知識しか持っていませんが、http://dustyant.com/articles/deeshell/は基本の適切な説明のようです。繰り返しになりますが、メインの Windows インストールを詰まらせないように、VM または何かでこれを行うようにしてください。
「シェル交換」の意味を簡単に説明すると、ログイン後、Windows は「エクスプローラー」と呼ばれるアプリケーションを起動します (これが Vista/Win 7 に当てはまるかどうかはわかりません...最近、もう少し複雑になったという漠然とした記憶があります)。 、基本的にデスクトップ、タスクバーなどを描画します...デフォルトのグラフィカルシェルの代わりに別のアプリケーションを起動するようにWindowsに指示することができます。その時点で、あなたは Windows のメイン UI を制御できます...つまり、Windows がシェルで通常行うすべてのことを担当することになります...多くの制御と柔軟性が得られ、多くの頭痛の種になる可能性があります。