別のユーザーとしてプログラムを起動したい – プログラミング – Home

別のユーザーとしてプログラムを起動した...
 
通知
すべてクリア

[解決済] 別のユーザーとしてプログラムを起動したい


一兵
 一兵
(@一兵)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

以下のようなことをやりたいと思っています。

Aユーザー(標準権限)
Bユーザー(管理者権限)

Aユーザーは管理者権限をもっていないので、管理者権限が必要な
場合は、Bユーザーとしてプロセスを起動します。

そのプロセス内で、別のプロセスの起動が必要なのですが、このプロセス
を Aユーザーとして起動したいと思います。

この Aユーザーとしての起動をパスワードの入力をせずに
実行したいのですが、そのようなことは可能でしょうか?

開発環境は VisualStudio 2005 です。
よろしくお願いします。


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

CreateProcessWithLogonWでプロセスを起動してみてはどうでしょう。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

CreateProcessWithLogonW でもパスワードは必要ですね。

> Aユーザーは管理者権限をもっていないので、管理者権限が必要な
> 場合は、Bユーザーとしてプロセスを起動します。

というのは、以下のような想定でよろしいですか?
なお、「ユーザー」という言葉がPCを操作する人間のことを指さないことを明確にするた
め、以降では「アカウント」と呼び換えました。
・PC を操作する人は1人。
・この人は、Aアカウント、Bアカウント両方のパスワードを知っている。
・普段はAアカウントを使用している。
・特定のプログラムを使う場合のみ、Exe ファイルを右クリックして「別のユーザーとし
て実行」等を使って、Bアカウントで実行する。

この想定が正しければ、管理者権限の必要なプログラム(便宜的に「管理プログラム」と
呼ぶ)を実行しているとき、オペレータはAアカウントとしてパソコンにログインしたま
まということになりますね。

既にAアカウントがログイン済みなのであれば、何らかの方法でトークンを取得できても
いいような気がするのですが、そのような方法があるのかどうかわかりません。
(トークンが取得できれば、CreateProcessAsUser が使えます)

管理プログラムから実行するプログラム(便宜的に「一般プログラム」と呼ぶ)をAアカ
ウント権限で実行したい理由は何なのでしょうか?
それが明確になれば、代替方法が見つかるかもしれません。


返信引用
一兵
 一兵
(@一兵)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

返信ありがとうございます。

状況としては、シャノンさんが書かれたものそのものです。

標準権限ユーザーでインストールする場合は、管理者権限で実行する必要があり、
インストール後にインストールプログラムを実行したいけれど、そのままだと
管理者権限があるユーザーでの実行になってしまうので、標準権限ユーザー
実行が必要。

標準権限ゆーざーで実行するときに、パスワードを入力させればいいのですが、
ログイン時にパスワードを入力しているので、わざわざ入力させるのはおかしい
と思うので、その手間を省きたいというところです。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> 標準権限ユーザーでインストールする場合は、管理者権限で実行する必要があり、
> インストール後にインストールプログラムを実行したいけれど、そのままだと
> 管理者権限があるユーザーでの実行になってしまうので、標準権限ユーザー
> 実行が必要。

「管理者権限で実行する必要があるアプリ」ってのはインストーラのことなのですか?
であれば、それを使うことなどそう何度もあることではないのですから、インストーラ
からアプリを起動するというのをあきらめるのが一番簡単で堅実な方法だと思います。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

GetShellWindowで取得したハンドルからプロセス求めて
OpenProcessTokenでトークン取れますね。

FireFoxのソースにほぼそのまま使えるコード(LaunchAsNormalUser関数の部分)
があるので参考にしたらいいでしょう。
http://mxr.mozilla.org/firefox/source/toolkit/xre/nsWindowsRestart.cpp


返信引用
一兵
 一兵
(@一兵)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

FireFox の ソース を Vistaで実行したら
パスワードなどを入力せずに
標準ユーザー権限でプログラムを起動することを確認できました。

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました