動作環境: Win2K VB.NET2003
はじめまして、チョコと申します。
現在、ある実行EXEをAdministrator権限でVBから起動させたいと思っています。
「Shell関数にユーザ権限を付与して実行」というような機能を実現させたいのですが、どうやれば良いのでしょうか?
心当たりのある方は「これで出来ない?」程度でもいいので教えてくださいヽ(;´д`)ノ
(ここ2日間調べて全く手がかりが掴めません。調べ方ヘタクソかもorz)
Shell関数にユーザ権限を付与して実行は
分かりませんが、
ログインしているユーザに権限を与えるか
Administrator権限を持っているユーザに
偽装ログインすればいいのでは無いでしょうか?
一応権限を付与するサンプルです。
ドメイン環境が無いので、ドメインを指定した時に
正しく動くか分かりませんが・・・
Dim objContainer As ActiveDs.IADsContainer
Dim objUser As ActiveDs.IADsUser
Dim objGroup As ActiveDs.IADsGroup
'接続
'ドメインユーザ時はドメイン名
'ワークグループ時はコンピュータ名
objContainer = GetObject("WinNT://" & "ドメイン名ORコンピュータ名")
'IADsUserオブジェクトを作成
objUser = objContainer.Create("User", "ユーザ名")
'IADsGroupオブジェクトの作成
objGroup = objContainer.Create("Group", "Administrators")
With objGroup
.Add (objUser.ADsPath) '権限追加
.Remove (objUser.ADsPath) '権限削除
End With
objUser = Nothing
objContainer = Nothing
objGroup = Nothing
既に権限を持っていた場合は、
エラーになりますので
例外処理を考慮して下さい。
ありがとうございます。
嬉しいんですがセキュリティ上の問題で
ユーザへ権限を追加は出来そうにありません。
また、何か「こんなのが...」などあったら宜しくお願いします。
起動したExeをプログラムから制御したりしないのであれば、
Runasを使用してみてはどうでしょうか?
#パスワードを指定できないので、パスワード入力の画面が出てしまいますが。
あとは、APIのLogonUser, CreateProcessAsUserを使用する方法があるのではないかと。
#ちなみに私は使用したことがありません(汗
>Runasを使用してみてはどうでしょうか?
>#パスワードを指定できないので、パスワード入力の画面が出てしまいますが。
ユーザがAdministratorの権限を知らないので、これは無理です。
>あとは、APIのLogonUser, CreateProcessAsUserを使用する方法があるのではないかと。
>#ちなみに私は使用したことがありません(汗
おおおぉ、なんか良い香りのする言葉が!!
ありがとうございます。上記の二つをキーワードに調査してみます。
無事アプリの実行が出来ました^^♪
ただ、APIへの引数の渡し方がわるいみたいで
GUIあるアプリがフリーズしてたりしますが、
なんとかゴールが見えてきました〜♪
.NETでAPI使用は初めてだったのでお返事遅くなりました^^;