.NET TIPS 別のユーザーでほかのアプリケーションを実行するには?[C#、VB、2.0、3.0、3.5]デジタルアドバンテージ 一色 政彦2009/05/21 |
|
|
「TIPS:ほかのアプリケーションを実行するには?」では、Processクラス(System.Diagnostics名前空間)の静的メソッドであるStartメソッドを使って、プログラム内からほかのアプリケーションを実行する方法を紹介している。
この際、現在のユーザーとは別のユーザーでほかのアプリケーションを実行したい場合、.NET Framework 2.0以降で導入された、Startメソッドの新しいオーバーロードを使えばよい。このオーバーロードでは以下の順に引数を指定する。
- アプリケーションのファイル・パス
- コマンドライン引数(省略可)
- ユーザー名
- パスワード
- ドメイン
パスワード以外は通常の文字列(=Stringオブジェクト)として指定すればよいが、パスワードはSecureStringクラス(System.Security名前空間)のオブジェクトとして指定する必要がある。
SecureStringクラスは、.NET Framework 2.0で搭載されたもので、文字列を暗号化したうえでメモリ上に展開し、メモリ上に配置されたデータの破棄を確実に行う機能(=ClearメソッドやDisposeメソッド)を備えている。そのため、Stringクラスよりもより安全に文字列を扱える(=第三者のプログラムによってメモリ上のパスワード文字列を読み取られて盗用される危険性が低減される)。このような特徴から、SecureStringクラスは特に、クレジットカード番号やパスワードなどの機密情報を扱うのに適している。
SecureStringクラスを使うには、そのインスタンスを生成してから、AppendCharメソッドにより(文字列を)1文字ずつ追加していく必要がある。コンソール・アプリケーションの場合は、次のようなコードになる。
|
||
SecureStringクラスにおける文字列の構築(上:C#、下:VB) |
そして次のコードは、Process.Startメソッドを使って、別のユーザーでほかのアプリケーションを実行するコンソール・アプリケーションのサンプル・プログラムだ。上記で「(省略可)」となっていた「コマンドライン引数」は指定していない。
|
||
別のユーザーでほかのアプリケーションを実行するサンプル・プログラム(上:C#、下:VB) |
ドメイン・ユーザーではなくローカル・ユーザーの場合は、ドメイン名にnull/Nothingを指定すればよい。
なお、「TIPS:コマンド・プロンプトを表示せずにコンソール・アプリケーションを実行するには?」のようにProcessStartInfoクラス(System.Diagnostics名前空間)を使う場合は、ProcessStartInfoオブジェクトの、
- Domainプロパティ:ドメイン
- UserNameプロパティ:ユーザー名
- Passwordプロパティ:パスワード
を利用すればよい。ローカル・ユーザーの場合はDomainプロパティを指定しなくてよい。
利用可能バージョン:.NET Framework 2.0以降 カテゴリ:クラス・ライブラリ 処理対象:Windows環境 使用ライブラリ:Processクラス(System.Diagnostics名前空間) 使用ライブラリ:ProcessStartInfoクラス(System.Diagnostics名前空間) 使用ライブラリ:X509Certificateクラス(System.Security.Cryptography.X509Certificates名前空間) 関連TIPS:ほかのアプリケーションを実行するには? 関連TIPS:コマンド・プロンプトを表示せずにコンソール・アプリケーションを実行するには? |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|