シェルをのっとるには
Windowsで動作させたいが、機能を制限したいことはありませんか?
これはシェルをのっとることによって可能です。
OSにログオンした際、Windowsはシェルを起動します。
Windows9xでは、シェルの初期化の情報がwin.iniに記載されています(win.iniにあるexplorer.exeを自分で作成したexeに置き換えるだけ)が、
NT系では、シェルの初期化時に呼び出されるexeがレジストリに記載されています。
ルートキー: HKEY_LOCAL_MACHINE
サブキー: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
値の名前: Userinit
値の種類: REG_SZ
値: C:\WINDOWS\system32\userinit.exe,
上記レジストリの値を、自分で作成したシェル(EXEファイル)へのパスに書き換えることにより、explorerを起動せずに独自シェルを起動することができるようになります。
ただ注意してほしいことがあります。
失敗すると、OSをログオンしても、2度とOSが立ち上がらなくなってしまうのです。
なので、あえてここではサンプルは控えます。
※ 作成する際は、再起動やシャットダウン、レジストリを元に戻す機能も追加しておきましょう。Ctrl+Alt+Delを効かないようにするためには、インジェクション等の仕組みを使ってください。
※ この方法でシェルを乗っ取りますと、スタートアップ時のEXEもすべて実行されなくなります。サービスは動作します。
もし、スタートアップ時の項目は実行したい場合は、レジストリのUserinitを独自EXEへのパスに書き換え、その独自EXEは、
(1) 新規デスクトップを作成し、
(2) 元のデスクトップでuserinit.exeを実行する
ようにするれば、スタートアップのプログラムも動作した状態で、シェルを乗っ取ることができます。
新規デスクトップの作成方法は、「新規デスクトップを作成するには」を参照してください。 |