0

Chroot は、しばしば親切なサンドボックスと同化されます。ただし、Unix では、特定の起動不可能なインストールでプログラムを使用することもできます。chroot で windows を検索すると、sandbox のようなものが表示されます。私はセキュリティが欲しいのではなく、システムを救う方法が欲しいのです。たとえば、ntpasswdで syskey を無効にした場合、そのようなユーティリティで C:\windows\system32\syskey.exe を実行すると、現在のレジストリ エントリではなく、オフライン インストールのレジストリ エントリが変更されます。代替ユーザーの runas と同様に、runon と呼ぶことができます。

ここで、Windowsのchrootは何を意味しますか? さて、Windows インストールと同じドライブ文字を持つことができる winre があります。例があります。compact.exe は winre インストールには存在しません。\%Windir%\system32 (オフライン インストールのディレクトリ) に cd してコンパクトを実行すると、動作しません (/? で使用する場合を除く)。あなたが実行する場合

X:\sources\>path C:\Windows\System32\

これで、オフライン ウィンドウにあるファイルを使用できます。ntdll.dll や最終的には gdi.dll などのベース DLL は、X:\%windir%\system32 ではなく C:\Windows\System32 のものであり、compact を実行すると機能します。

ただし、この方法で実行されるプログラムは現在のレジストリを使用します。メイン キー (HKLM; HKCC; HKCR; HKCU; HKU; HKEY_PERFORMANCE_DATA) とその内容は、Windows で起動したときのものではなく、現在の winre/pe インストールのものです。そのため、プログラムがいくつかのレジストリ エントリを変更する場合、C:\ システム ドライブにあるハイブではなく、X:\windows\system32\config のハイブを変更します。

オフライン ウィンドウのハイブを HKLM にマウントして編集することは可能ですが、HKLM\Software に情報を持つプログラムは、マウントした名前ではなく HKLM\Software を参照します。

私が探しているユーティリティは、(部分的に?) winpe/re のレジストリを非表示にして、オフライン インストールに存在するレジストリを優先します。予想される効果は、ユーティリティを使用してレジストリ エディタを起動すると、Windows を起動したかのようにキーが表示されることです。(もしかしたら一部例外?)

アプリケーションは、現在の Windows の Microsoft サービスを引き続き使用します。現在のウィンドウにインストールされていないオフライン ウィンドウにインストールされているサービスを起動したいです。カーネルの場合でもこれを行うとよいでしょう。このようにすると、UNIX で sysv デーモンを起動したときと同じ動作になります。ここを除いて、二重インスタンスを回避するための何らかのメカニズムが必要になる可能性があります。これは、Windows では問題がより重大になるためです。

ユーザー アクセス権は、Microsoft システムの重要な部分です。コマンドラインのパラメーターでユーザー名とパスワードを指定する必要がある場合があります。ユーザー データベースの構成が正しくないと、Windows の起動を妨げるいくつかの問題が発生します。syskeyを再度有効にするには、使用できなかった認証情報が必要です。しかし、syskey の問題のように、Windows が際限なく再起動する場合があります。ログイン情報の代わりにユーザーのパスを提供することで、ユーザーのハイブをマウントする方法を見つけることが 1 つの可能性だと思います。または、それが不可能な場合は、現在起動しているウィンドウのユーザー キー/情報を保持してみてください。

このようなユーティリティが存在するかどうかはわかりません。Linux から mingw を使用してプログラミングするためのヘルプが必要です (Visual Studio を使用できません)。インストールしなくてもいいのに。winreの下で動作するのを見たいので、.NETまたは完全なWindows APIを使用しないでください。私は Linux で C/C++ 用に書いていますが、Windows 用には書いたことがありません。私が持っている唯一の経験は、winebuilder で 7-Zip を構築できたという事実によって提供されます。メイン関数は、コンソール プログラムでは「main」、Windows プログラムでは「WinMain」と呼ばれることを知っています。私は WINAPI も nt API にも精通していません。Unix API の chroot() に相当するものがないことはわかっています。

これが可能であることを願っています、事前に感謝します。

4

1 に答える 1

2

いくつかのレビューの後、答えはノーです。それはできません。さまざまなシステム DLL に HKEY_LOCAL_MACHINE への埋め込み参照が多すぎます。最善を尽くしたとしても、非常にバグのあるシステムになってしまうでしょう (システムのさまざまな部分がマシン構成のさまざまなビューを参照するため)。

于 2013-08-09T22:26:00.307 に答える