0

昇格されたユーザー権限 (別のドメイン管理者アカウントとしてエミュレートされた実行) で winforms アプリケーションを実行していますが、現在ログオンしているユーザー権限を持つ URL への Web ブラウザーを開くサブプロセスを開始したいと考えています。パスワードとログオン情報の入力を求める必要があるため、現在ログオンしているユーザーのアクセス許可で NTLM を適切にハンドシェイクします。

私は次のようなことを試しました:

// I have the USER NAME, this is not the issue
// I have the Domain, this is not the issue

// I need to grab the Password from the currently logged on user 
// without prompting for it

System.Security.SecureString oPass = new System.Security.SecureString();
System.Diagnostics.Process.Start("IExplore.exe"
   , this.oConfiguration.WrappersURL
   , this.WindowsUserID
   , oPass
   , this.DomainName
  );

..しかし、ユーザーのパスワードを取得する方法がよくわかりません。生成されたプロセスの権利を、W7 および XP と互換性のあるログオン ユーザーに減らす方法についてのアイデアはありますか?

4

3 に答える 3

0

現在のユーザーを取得し、次のように開始します。

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Process.Start(startInfo);
于 2013-03-19T21:22:31.940 に答える
0

DomainName と UserName を取得するには、次のようにします。

編集:

var userNameSplit = System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split('\\');
var userDomain = userNameSplit[0];
var userName = userNameSplit[1];
于 2013-03-19T21:26:14.147 に答える
0

Windowsでこれを行う方法がないように見えるので、次のようにしてこのジレンマを回避することになりました。

  1. 現在のユーザーの下でコントローラー プロセスを生成します。
  2. 現在ログインしているユーザーの下でタスク プロセスを生成します。
  3. 別のタスク プロセスを生成し、その権限を管理者アカウントに昇格させます。
  4. コントローラー プロセスを使用して、2 つのタスク プロセス (資格情報を除いて同一) を管理/通知します。
  5. 場合によっては、ユーザー プロセスでプログラム アプリケーションの実行を初期化し、管理タスクでアプリケーションが動作するように指示します。

醜く、ハック的で、少し複雑ですが、それが企業のセキュリティです:D

于 2013-10-27T21:48:58.870 に答える