0

我正在运行具有提升的用户权限的 winforms 应用程序(模拟作为不同的域管理员帐户运行),但是我想启动一个子进程,用当前登录的用户权限打开一个 Web 浏览器到一个 URL,而不是没有提升的权限必须提示他们输入密码和登录信息,以便它正确地与当前登录的用户权限握手 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. 使用控制器进程来管理/通知两个任务进程(除了凭据之外它们是相同的)。
  5. 在某些情况下,让用户进程初始化运行程序应用程序,然后让管理任务指导应用程序工作。

丑陋,骇人听闻,有点令人费解,但这就是企业安全:D

于 2013-10-27T21:48:58.870 回答