WindowStationsウィンドウステーションについて知らなかったWindowStationsウィンドウステーション?この用語を聞いたとき、多くのネチズン達は混乱していて、WindowStationsウィンドウステーションとは何ですか?これは非常に専門的な用語ですか?私たちは知る必要はありませんネチズンの第一印象、Xiaobianはそれが同じではないとあなたに言います実際には、ウィンドウステーションとデスクトップはWindows NTサービスの中で最も特徴的かもしれません。ほとんどのプログラマは、これら2つのオブジェクトに直接触れることはしませんが、常に触る必要はあります。ウィンドウステーションとデスクトップオブジェクトは、イベント、ミューテックス、セマフォなどの他のWindows NTオブジェクトと同じくらい安全です。ウィンドウステーションオブジェクトは、クリップボード、グローバルアトミックセット、およびその他のデスクトップオブジェクトで構成されています。窓の駅は目に見えるか見えないです。可視ウィンドウステーションは、ユーザまたはマウスからの入力を受け取る。表示装置もそれに接続されているので、情報を対話型ユーザに表示することができる。
Windows NT 4.0では、WinSta0というウィンドウステーションは1つしか見えません。可視ウィンドウステーションもインタラクティブとして定義されています。目に見えないウィンドウステーションは対話的ではなく、そしてそれはいかなるユーザ入力または表示装置も受け入れない。
前述のように、デスクトップはウィンドウステーションオブジェクトに含まれています。デスクトップオブジェクトには、論理的な表示面、ウィンドウ、メニューなどが含まれています。可視のウィンドウステーションに属するデスクトップのみが表示され、ユーザー入力を受け取ることができます。このデスクトップはアクティブデスクトップと呼ばれます。
対話型ユーザーは、デフォルト、Winlogon、およびスクリーンセーバーの3つの異なるデスクトップにさまざまなタイミングで遭遇します。 Winlogonデスクトップは、Ctrl + Alt + Deleteを押すとあなたの目の前に表示されるダイアログです。デフォルトのデスクトップは、ブラウザか、対話型ユーザによって起動されたすべてのプロセスです。対話型アプリケーションデスクトップとして理解する必要があります。最後のデスクトップはスクリーンセーバーです。これはあなたのスクリーンセーバーを表示します。お気づきかもしれませんが、異なるデスクトップ間で切り替えることができます。ユーザーがCtrl + Alt + Deleteキーの組み合わせを押すと、オペレーティングシステムはデフォルトの状態からWinlogonデスクトップに切り替わります。ログインダイアログで[キャンセル]を選択すると、システムはデフォルトのデスクトップに戻ります。切り替えが行われたときにデスクトップ上の他のものが破壊されていないかという質問がありました。他のデスクトップを見ることはできませんが、まだそこにあります。
システム内のすべてのプロセスは、ウィンドウステーションとデスクトップに関連付けられています。ユーザーが初めてログインすると、対話型ウィンドウステーション、WinSta0、およびデフォルトデスクトップはすべてユーザーのシェルプロセスに関連付けられます。このようにして、ユーザはシェルを見ることができ、そうでなければ、ユーザは何も見ることができません。その後、シェルによって開始されたすべてのプロセスもWinSta0およびデフォルトのデスクトップに関連付けられます。
また、STARTUPINFOデータ構造体のlpDesktopメンバを通じて、プロセスがどのウィンドウステーションとデスクトップに関連付けられているかを指定することもできます。このデータ構造は、CreateProcessおよびCreateProcessAsUser関数に渡されます。 lpDesktopをNULLに初期化できます。つまり、CreateProcess関数は呼び出しプロセスと同じウィンドウステーションとデスクトップを使用します。独自のウィンドウステーションとデスクトップの組み合わせを「WinSta0 \\ Default」として定義することも、空の文字列を定義することもできます。このパラメータにより、オペレーティングシステムはブートプロセス用の新しい不可視のウィンドウステーションとデスクトップを作成します。これら2つの新しいオブジェクトに関連付けられているセキュリティによって、各グループにそれらへのフルアクセス権が付与されます。
typedef構造体_STARTUPINFO {//si DWORD cb;
LPTSTR lpReserved;
LPTSTR lpデスクトップ;
LPTSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFO、* LPSTARTUPINFO;
ウィンドウステーションとデスクトップはセキュリティオブジェクトです。ウィンドウステーションとデスクトップに関連するプロセスは、これらのオブジェクトへの適切なアクセス権を持っている必要があります。プロセスにアクセス権がない場合は、「User32.dllの初期化に失敗しました」または「Kernel32.dllの初期化に失敗しました」というメッセージが表示されます。 。プロセスによって返された終了コードは128またはERROR_NO_WAIT_CHILDRENです。それでは、適切なアクセスとはどういう意味ですか?ファイルのようなオブジェクトがある場合。このファイルに対するDACLを作成して、ユーザーにこのファイルへの読み取りアクセス権を与えることができます。 Windowステーションはデスクトップと同じように機能します。
Copyright © Windowsの知識 All Rights Reserved