Programming Windows Maniacs - プログラミング ウィンドウズ マニアックス ■ ご利用に際して ■ 更新履歴 ■ お問い合わせ ■ このホームページについて  
ホーム >> シェル >> シェルをのっとるには

シェルをのっとるには

  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を実行する
ようにするれば、スタートアップのプログラムも動作した状態で、シェルを乗っ取ることができます。

  新規デスクトップの作成方法は、「新規デスクトップを作成するには」を参照してください。

  ■ ご利用に際して ■ 更新履歴 ■ お問い合わせ ■ このホームページについて Copyright © 2014 A.Morita