Windowsで実行されているC++アプリケーションで実行時に特権を削除することは可能ですか?WindowsのC++でのドロップ特権
たとえば、ユーザーが管理者としてアプリケーションを起動しても管理者としてアプリケーションを実行する必要がない場合、管理者権限を何らかの方法で放棄できますか?
要するに、私はmain()関数にコードを書く必要があります(Windowsディレクトリに書き込みアクセスなど)。
Windowsで実行されているC++アプリケーションで実行時に特権を削除することは可能ですか?WindowsのC++でのドロップ特権
たとえば、ユーザーが管理者としてアプリケーションを起動しても管理者としてアプリケーションを実行する必要がない場合、管理者権限を何らかの方法で放棄できますか?
要するに、私はmain()関数にコードを書く必要があります(Windowsディレクトリに書き込みアクセスなど)。
はい、AdjustTokenPrivilegesを使用すると、不要で危険な特権をトークンから削除できます。直ちに必要でない場合は無効にするか(特権は後で有効にすることができます)、トークンから特権を削除することができます。
CreateRestrictedTokenで制限付きトークンを作成し、その制限付きトークンで実行中のアプリケーションを再起動することもできます。 CreateRestrictedTokenを使用すると、権限を無効にしたり、Administratorsグループなどのグループをトークンから削除することができます。
AdjustTokenGroupsを使用すると、実行中のプロセスのトークンから管理者グループを削除できますが、実行中のプロセスでこれを試みたことはありません。
Windowsディレクトリへの書き込みアクセス権は特権の対象外であることに注意してください。システム内のリソースには、アクセス権を管理するACL'sがあります。システムと管理者は、Windowsディレクトリへの書き込みアクセス権を持ちます。