0

以下はシナリオです。

  1. ユーザー名「JOHN」を使用して Windows にログインしました
  2. c# で書かれた Windows アプリケーションを実行します。このツール名は BootStrapper.exe です。しかし、このツールは Run As 機能を使用して "ALEX" という別のユーザーを使用して実行しました。
  3. ブート ストラップには、「Launch Application」というボタンが表示されます。[Launch] をクリックすると、c# の Process クラスを使用して Application.exe を実行します。ユーザー名とパスワードを渡していないことに注意してください。そのため、Application.exe も「ALEX」ユーザーの下で実行されています。

「ALEX」によって起動された場合でも、Bootstrapper.exe から「JOHN」の下で Application.exe を実行するにはどうすればよいですか。"JOHN" のパスワードは Application.exe に知られず、JOHN ユーザーになりすますことに注意してください。

4

2 に答える 2

1

JOHNによって開始されたプロセスでWCFサービスをホストします(おそらくスタートアップフォルダーに配置します)。

開始するプロセスを指示するコマンドを使用して、ALEXプロセスからWCFサービスを呼び出します。
WCFサービスからプロセスを開始すると、JOHNとして実行されます。

于 2012-10-01T11:38:00.337 に答える
0

下手な英語で申し訳ありません。たぶん私はあなたを誤解しています... コンパイルして、結果を "C:\test" ディレクトリにコピーします。今すぐ実行してください。

using System;
using System.Text;
using System.Diagnostics;
using System.Security;
using System.Reflection;
using System.IO;

namespace ConsoleApplication6 {
    class Program {

        unsafe static void Main(string[] args) {

            Process process = new Process();
            String dir = Path.GetDirectoryName(typeof(Program).Assembly.Location);

            String txtFile = Path.Combine(dir, "example.txt");
            if (!File.Exists(txtFile)) {
                StreamWriter sw = File.CreateText(txtFile);
                sw.Close();
                sw.Dispose();
            }

            ProcessStartInfo info = new ProcessStartInfo();

            info.Domain = "myDomainName";
            info.UserName = "userName";
            String pass = "userPassword";

            fixed (char* password = pass) {
                info.Password = new SecureString(password, pass.Length);
            }

            // Will be run notepad.exe
            info.FileName = Environment.ExpandEnvironmentVariables(@"%winDir%\NOTEPAD.EXE");
            // in notepad.exe will be open example.txt file.
            info.Arguments = txtFile;
            info.LoadUserProfile = false;
            info.UseShellExecute = false;
            info.WorkingDirectory = dir;

            process.StartInfo = info;
            process.Start();
        }
    }
}

よろしく

于 2012-10-01T12:10:00.480 に答える