Windows Vista では、インストール時に Administrators グループに所属するユーザを作成します。これは、Windows XP と同じです。しかし、ビルト イン アカウントである、Administrator が無効になっています。
そして、Administrators グループに所属するユーザは、XP と違い、Users グループと同じ特権が使われます。つまり、XP では、Administrator ユーザと Administrators グループのユーザは実質的に同じだったのですが、Vista では違うものとして扱われます。
これによって、Administrators グループのユーザでは、コンピュータの動作に対して変更を加えるような動作をするコマンドは失敗します。
つまり、例えばウィルス プログラムが、レジストリに何か変更を加えたり、システム ファイルを書き換えようとしても、必ず失敗します。
しかし、そのようなことをしたいプログラムもあって、例えばアンチ ウィルス プログラムは、ファイル操作に割り込んで、これから書こうとしたり、読み込もうとするファイルを検査するわけですが、そういう動きが阻害されては困ります。
この場合、あらかじめ「このプログラムを実行するためには、管理者特権が必要」とマークしておきます。
以下、Windows SDK の Running with Administrator Privileges を翻訳。(Logo Vista X Pro 3 による翻訳後、若干修正)
Running with Administrator Privileges |
アドミニストレーター特典で稼働します |
The first step in establishing which type of account your application needs to run under is to examine what resources the application will use and what privileged APIs it will call. You may find that the application, or large parts of it, do not require administrator privileges. Writing Secure Code, by Michael Howard and David LeBlanc offers an excellent description of how to carry out this assessment and is highly recommended. |
アプリケーションがどのアカウントのタイプの下で実行する必要があるかを確定することにおける最初のステップは、アプリケーションが何のリソースを使うであろうか、何の特権を与えられた API を呼び出すであろうか、吟味することです。アプリケーション、あるいはそれの大部分が、アドミニストレーター特典を必要としないことに気付くかもしれません。 マイケル・ハワード (Michael Howard) とデイビッド LeBlanc (David LeBlanc) による、『Writing Secure Code』は、この査定を実行する素晴らしい方法を提供しており、大いに推薦されています。 |
You can provide the privileges which is your application needs with less exposure to malicious attack by using one of the following approaches: |
次のアプローチの1つを使うことによって、悪意がある攻撃への露出をより少なくしながら、アプリケーションが必要な特典を提供することができます: |
- Run under an account with less privilege. One way to do this is to use PrivilegeCheck to determine what privileges are enabled in a token. If the available privileges are not adequate for the current operation, you can disable that code and ask the user to logon to an account with administrator privileges.
|
- より少ない特典におけるアカウントの下で実行してください。 これをする1つの方法が PrivilegeCheck を何の特典がトークンで使用可能であるか決定するために使うことです。 利用可能な特典が現在のオペレーションに対して十分ではない場合は、そのコードを不能にして、そしてアドミニストレーター特典を持ったアカウントでログオンするように、ユーザーに頼むことができます。
|
- Break into a separate application functions that require administrator permissions. You can provide for the user a shortcut that executes the RunAs command. For detailed instructions on how to set up the shortcut, search for "runas" in Help. Programmatically, you can configure the RunAs command under the AppId registry key for your application.
|
- 別個のアプリケーションに、アドミニストレーターパーミッションを必要とする機能を分けてください。 ユーザーに RunAs コマンドを実行するショートカットを提供することができます。 ショートカットをセットアップする方法についての詳細な説明のために、ヘルプ (Help) で「runas」を捜してください。 Programmatically に、アプリケーションのために AppId レジストリのキーのもとに RunAs コマンドを配置することができます。
|
- Authenticate the user by calling CredUIPromptForCredentials (GUI) or CredUICmdLinePromptForCredentials (command line) to obtain user name and password. For an example, see Asking the User for Credentials.
|
- ユーザ名とパスワードを得るために CredUIPromptForCredentials (GUI)あるいは CredUICmdLinePromptForCredentials (コマンドライン)を呼び出すことによって、ユーザーを認証してください。 例のために、 Asking the User for Credentials 見てください。
|
- Impersonate the user. A process that starts under a highly privileged account like System can impersonate a user account by calling ImpersonateLoggedOnUser or similar Impersonate functions, thus reducing privilege level. However, if a call to RevertToSelf is injected into the thread, the process returns to the original System privileges.
|
- ユーザーを偽装してください。 System のような、高い特権があるアカウントの元で実行されるプロセスが、 ImpersonateLoggedOnUser あるいは類似の Impersonate 関数を使用することによって、特典レベルを下げたユーザアカウントに偽装することができます。 しかしながら、 RevertToSelf へのコールがスレッドに注入される場合は、プロセスはオリジナルの System 特典に戻ります。
|
If you have determined that your application must run under an account with administrator privileges and that an administrator password must be stored in the software system, see Handling Passwords for methods of doing this safely. |
アプリケーションがアドミニストレーター特典におけるアカウントの下で走らなくてはならない、そしてアドミニストレーターパスワードがソフトウェアシステムにストアされなくてはならないと決定した場合は、安全にこれをすることについてのメソッドのために取り扱いパスワード (Handling Passwords) を見てください。 |
投稿日時 : 2006年5月24日 22:39