... C#ツールを使用してユーザーに一時的な管理者権限を与えたい。したがって、ユーザーを管理者ユーザーグループに追加します(権限のあるサービスアカウントで実行されているバックグラウンドサービスはこのジョブを実行します)。ただし、変更は新しいセッション(ログアウト/再ログインの後)でのみ有効で、不便です。現在のユーザープロファイルを更新する方法はありますか?現在のユーザープロファイルを更新する
私はいくつかの方法を試してみました:
- .NET Process.Start経由してtrueに設定LoadUserProfileプロパティで。
- 次は、LoadUserProfile Win32 API関数を使用して試しました。
- もう一つの方法は、.NET偽装権限の変更を認識しませんでした
これらすべての試行でユーザーを偽装することでした。古い特権を含み、いつでも再ロードされる、キャッシュされたユーザープロファイルがあるようです。
新しいプロファイルがロードされた唯一の方法は、runasコマンドである、しかし我々は、ユーザーがコマンドラインで遊んでする必要はありません、.NET
からこれを行うことは可能であるべき素晴らしいことです別のオプションがある場合は?多分これを行うためのツールがありますか?
[OK]をクリックすると、ユーザーが再ログインして、次に新しいトークンを使用します。 CreateProcessAsUserを使用して、新しいトークンを使用して新しいプロセスを実行します。現在のWindows環境に新しいトークンを割り当てる方法があるので、ユーザーがWindowsで実行するすべてのアクションはこの新しいトークンを使用しますか?それ以外の場合は、lsrunasのような他のツールを使って新しいコンテキストでプロセスを開き、winapi呼び出しを避けることができます。
私たちはユーザー(個人のノートブック)を信頼して、彼が望む(一時的な時間)ソフトウェアをインストールすることができますが、私たちは各ツールをツールで文書化しています。我々は、グループ割り当てとシステム文書を管理するバックグラウンドでローカル管理者アカウントを使用してサービスを実行しています。
あなたのサービスがハングアップしたり、誰かがそれを破壊する方法が見つかった場合はどうなりますか?あなたはUATや通常のセキュリティ方法を迂回してユーザーを昇格させる方法を提供しました。 –
ローカルシステム権限で実行されているサービスにはリスクがあります。もちろん、サービスのインターフェースはセキュリティを念頭に置いて開発する必要があります。 –