問題タブ [openprocess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - OpenProcessToken() は「アクセスが拒否されました」を返します
ログイン画面 (デスクトップ コントロール用) でプロセスを生成するサービスとして実行されるプロジェクトの一部として、OpenProcessToken() を呼び出します。これが複製され、プロセスが作成されます。これは LocalSystem では正常に機能しますが、ドメイン アカウントでは機能しません。コードフラグメントは以下のとおりです...
周囲のサポート機能の完全なソースは、ここにあります。
ここが少し曖昧なところです。OpenProcessToken() には権限が必要であることを理解しています。これが最終的にエラーが発生する理由ですが、必要な権限と、それをドメイン アカウントに対して効果的に割り当てる方法が明確ではありませんでした。
これは、必要な特権が SeTcbPrivilege (「オペレーティング システムの一部として機能する」) であることを示唆しています。
ローカルまたはグループ セキュリティ ポリシーを使用して SeTcbPrivilege をドメイン アカウントに割り当てることができることを示唆する特権に関する Microsoft のページ (リンクできません、評判が不十分です - 申し訳ありません) を読みました。また、宛先プロセス (つまり、winlogon.exe) がLocalSystem 以外のトークンの取得を許可しない可能性があることも示唆されています。
サービスのアカウントを使用してドメイン アカウントを明示的に構成しようとしましたが、ローカル セキュリティとグループ ポリシーでgporesult
、ポリシーが有効になったことを確認するために再起動して実行しましたが、whoami /priv
戻るたびに SeTcbPrivilege が無効になっています
私の質問は、これが可能かどうか (ドメイン アカウントを使用して winlogon.exe トークンを取得できますか) であり、可能であれば特権をプログラムで設定できますか、それとも GPO を介して設定する必要がありますか? (もしそうなら、以前の GPO の使用の試みが効果がなかったことを考えると、どのように可能でしょうか)
c++ - 管理者として実行している場合、最小限の権限で OpenProcess を使用するためにデバッグ権限を取得する必要があるのはなぜですか?
プログラムの 1 つが、サービスである別のプログラムを呼び出そうとしOpenProcess
ます。最初のプログラムは、ローカルの管理者アカウントまたは管理者グループの別のメンバーとして実行されており、サービスは SYSTEM ユーザーとして実行されています。
少なくとも 1 つの環境 (ただしすべてではない) で、への呼び出しが でOpenProcess
失敗することがわかりましたERROR_ACCESS_DENIED
。さらに、 を使用して特権AdjustTokenPrivileges
を取得すると、成功することがわかりました。以下のプログラムを使用して動作を再現しました。失敗した環境は Windows 8.1 を実行していますが、成功したシステムが実行されているものはわかりません。SE_DEBUG_NAME
OpenProcess
プログラムが要求する唯一のアクセス許可はPROCESS_QUERY_LIMITED_INFORMATION
(最終的に を呼び出すためQueryFullProcessImageName
) です。私が読んだことのあるものは、そのためにデバッグ権限が必要であることを示唆してPROCESS_VM_READ
いPROCESS_ALL_ACCESS
ません。
私は保護されたプロセスについて読んだことがあります.私が対象としているサービスは保護されたプロセスとして指定されていませんが、ドキュメントには、保護されたPROCESS_QUERY_LIMITED_INFORMATION
プロセスに付与することを禁じられているアクセス許可の中にはない.
元の呼び出しがOpenProcess
失敗するのはなぜですか? また、デバッグ権限によって違いが生じるのはなぜですか?
c - ReadProcessMemory の 2 つの呼び出しで単一の HANDLE を使用する場合の無効なハンドル
Windows API について学び始めたばかりで、特定のプロセスで値を読み取る簡単なプログラムを作成したいと考えています。
これが私のコードです
ただし、RPM の 2 回目の呼び出し用に新しいハンドルを作成すると、完全に機能します。
MSDNでこれを読みました:
OpenProcess 関数によって返されるハンドルは、プロセスへのハンドルを必要とするすべての関数で使用できます。」
私は何を間違っていますか?