> > 1.ユーザーアカウント及びパスワードの正当性 > > 2.ユーザーアカウントがサービス起動権限をもっているか > > ※プログラムは管理者権限をもつユーザーが実行 > このユーザーアカウントとパスワードって、 > OSにログインするときのやつ? > そんなん、どの段階でどうやって値を取得して正当性を > チェックしようとするの? > 僕には1がとてつもなく危険なことをしようとしているように > 思えるのですが。パスワードを抜かれるちゅうことでしょう? > セキュリティ的に問題があるように思います。 > > > 上記をLogonUser()を使用して行おうと考えています。 > > そこでSE_TCB_NAME特権が必要になりますが、実行するユーザーが > > この特権を持っているとは限らないため、プログラム上から一時的 > > に特権を与えられないかと調査しています。 > > しかし、手がかりもなくいまだに方法がわかりません。 > > どなたかご存知ないでしょうか? > 特権の付与って、OSのツールだけ許されてたような、気がする。 > その特権の有効・無効はアプリで操作できるけど。 > これをポンポンいろんなアプリでされると、NT系のOSを > 入れている意味が無いので、管理者はたまったもんじゃない。 > > > もしくは上記をチェックする別の方法がありましたら、教えて > > いただけないでしょうか? > 仕様がとても危険に思えるので、これ以上はなんともいえません。 > もう少し、何がしたいが為に1・2をしたいのかわかれば、 > 何か、アドバイス出来るかもしれませんし、 > 出来ないかもしれません。(^^; 現在、サービスのインストーラを作成中です。 サービスの起動アカウントを画面から入力してもらう仕様で、 その入力値をチェックするのため、1,2を行いたいのです。
1についてはNetUserChangePassword()を使うことで解決しました。 2についてはいまだに模索中です。 CreateService()の戻り値で権限チェックは行えるのですが、インストールするモジュールが所定位置へ転送される前のため、タイミング的に無理というわけです。 何かよい方法をご存知ないでしょうか?
|