実行可能ファイルを実行したユーザーが管理者かどうかをプログラムで確認するにはどうすればよいですか?
これは、Mac OS X 10.6 (Snow Leopard) 以降の C++ です。私の多くの検索では、何も見つかりませんでした。
ユーザーが所属していることを確認groups
し、ユーザーが必要なグループに所属していることを確認します。ユーザーが「admin」に属していることを確認したいと思いますが、代わりに他のより具体的なアクセスを確認したい場合があります。とにかく管理者を確認したいのはなぜですか?通常、幅広いレベルのアクセス権をチェックして、ユーザーがそのアクセス権を持っていなくても実際には必要な特定のアクセス権を持っている場合に失敗するよりも、タスクを直接試す方が良い考えです。
getuid() を呼び出してユーザー ID を確認するのはどうですか? OS X は BSD に基づいています。ということで、この関数でどのIDで処理を行っているかを確認できるのではないかと思います。
Open Directoryがこれを行う適切な方法のようです。getegid()
および/またはを使用して安くすることができるかもしれませんsetegid()
私はそれをテストしていませんが、これはうまくいくかもしれません:
// 80 should be the admin group number, but it Apple might change it in a later release.
if (getegid() == 80 || setegid(80) == 0) {
// Yea! I'm an admin.
}
フォローアップする簡単なアイデアがいくつかあります。彼らがあなたを正しい方向に導くことを願っています。