ユーザを指定してアプリケーションを呼び出すには?

解決


ちょこ  2004-07-08 12:41:59  No: 84447  IP: [192.*.*.*]

動作環境: Win2K VB.NET2003

はじめまして、チョコと申します。

現在、ある実行EXEをAdministrator権限でVBから起動させたいと思っています。
「Shell関数にユーザ権限を付与して実行」というような機能を実現させたいのですが、どうやれば良いのでしょうか?

心当たりのある方は「これで出来ない?」程度でもいいので教えてくださいヽ(;´д`)ノ
(ここ2日間調べて全く手がかりが掴めません。調べ方ヘタクソかもorz)

編集 削除
ei  2004-07-08 15:55:11  No: 84448  IP: [192.*.*.*]

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

既に権限を持っていた場合は、
エラーになりますので
例外処理を考慮して下さい。

編集 削除
ちょこ  2004-07-08 16:22:51  No: 84449  IP: [192.*.*.*]

ありがとうございます。

嬉しいんですがセキュリティ上の問題で
ユーザへ権限を追加は出来そうにありません。

また、何か「こんなのが...」などあったら宜しくお願いします。

編集 削除
うにぃ  2004-07-08 16:55:35  No: 84450  IP: [192.*.*.*]

起動したExeをプログラムから制御したりしないのであれば、
Runasを使用してみてはどうでしょうか?
#パスワードを指定できないので、パスワード入力の画面が出てしまいますが。

あとは、APIのLogonUser, CreateProcessAsUserを使用する方法があるのではないかと。
#ちなみに私は使用したことがありません(汗

編集 削除
ちょこ  2004-07-08 17:35:10  No: 84451  IP: [192.*.*.*]

>Runasを使用してみてはどうでしょうか?
>#パスワードを指定できないので、パスワード入力の画面が出てしまいますが。

ユーザがAdministratorの権限を知らないので、これは無理です。

>あとは、APIのLogonUser, CreateProcessAsUserを使用する方法があるのではないかと。
>#ちなみに私は使用したことがありません(汗

おおおぉ、なんか良い香りのする言葉が!!
ありがとうございます。上記の二つをキーワードに調査してみます。

編集 削除
ちょこ  2004-07-12 11:46:25  No: 84452  IP: [192.*.*.*]

無事アプリの実行が出来ました^^♪

ただ、APIへの引数の渡し方がわるいみたいで
GUIあるアプリがフリーズしてたりしますが、
なんとかゴールが見えてきました〜♪

.NETでAPI使用は初めてだったのでお返事遅くなりました^^;

編集 削除