• 締切済み

VBでWindowsをログオフ・ログオンする方法

VisualStudio2010(VB)で、プログラミングをしています。 フォーム上のボタンをクリックすると、自分のユーザーにロックをかけて、別のユーザーに切り替えたいのですが、できるでしょうか。 詳しい流れはこちらです。 Form1のButton1をクリック→自分のユーザーをロックする(スタートメニューでいう「ユーザーの切り替え」)→別のユーザーでログオンする(パスワードあり)→プログラムを自動起動させる ロックは、shutdown.exeを、プログラムを自動起動させるのは、ショートカットをスタートアップに作成する方法を取るつもりです。 自動でログオンする方法を教えてください。

みんなの回答

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1

やっぱりスレ付きませんね。なにせ、特定ユーザーからの投稿、みえみえで。 そのうち、監視団(OKWeveたろう<=この世界で喜びをかんじている馬鹿)から、我慢しきれず、横槍がはいるかな。 まあ、それでもこの手のスレッドが結構ネットを探せばでてくる。いろいろ手はあるようだが、根本的な事をひとつ、 >Form1のButton1をクリック→自分のユーザーをロックする これ、なんで必要ですか。目的は何ですか? 目的よってやり方が変わるのわかります? 説明しているようで、何をしたいのか書いてないんですよ。 目的その1。 そのユーザーのディスクトップを起動したい。つまりそのディストップ上で作業するので、ディスクトップ上にあるものにアクセスしたい。 目的その2。 そのユーザーで、プログラムを動作させたい。ディスクトップ上の物は特に関係ない。 (この中には、プログラムのマルチユーザー別に設置、更新、削除等のメンテナンスを目的もある) どう。違いわかります。他にもあるかもしれませんが、大まかに言えば、こんなとこだろう。 いずれにせよ、UNIX系OSでは(Linuxを含む)、結構簡単なことでした。と言うのも、ユーザーだけでなくディスクトップも、他のマシンにあるユーザーホームを呼び出すのが普通だったので。 つまり、ユーザーの切り替えは、rlogin, su, telnet などでできます(コマンドベース)。しかし、そのままだと、ディスクトップにセキュリティーがかかっているし、表示先は、ログイン先のマシン。 じゃ、どうするか、DISPLAY と言う環境変数でマシンを指定すると、そこで起動するGUIのアプリは目の前に表示されます(コマンドオプションに対応している場合も)。 つまり、いちいち、ディスクトップから別のディスクトップにログインするなんて面倒な事はしません。 ではWindowsは? Vistaから、明示的にできるようになった(前からあったが)。 >runas /user:[ユーザー名] [コマンド] と言うものが用意されている。GUIでは、プロパティーに「だれで起動するか」がある。Shell APIで指定すればGUIから同じようにしてできる(Shift+右クリック)。 と言うことで、後術の目的はこれで達成できます。前述も、CMDなどそのユーザーで起動したものなら、ディスクトップにはフォルダーパス指定でアクセスできます。 UNIX系だとディスクトップに表示するには、環境変数などにおまじないを書かないと、セキュリティーが解除されないが、Windowsはその辺が甘い。 目的が、「GUIでユーザーの切り替えをしたい」だけなら、プログラムの実行ユーザーを、Systemにしないと無理。何せディストップから離れるという事は、アクティブユーザーをシステムに移行することなので、その時点で、エクセルの実行自体はバックグランドになり、制御をうしなう。なのでCUIレベルで、バックグランドで最初から、そのプロセスを行う必要がある。その辺わかるかな。 なので、Windowsについている自動実行の仕組みを使って行うしかない。 ヒントになったかな。ネットで検索してみよう。

ztztno1
質問者

補足

ん?特定ユーザー?どういうこと? 目的は1ですが、 ディスクトップってどこですか?Cドライブのルートのことですか?

関連するQ&A

専門家に質問してみよう