使用默认凭据启动流程

时间:2012-02-17 14:19:29

标签: c# process io environment credentials

我正在使用我的凭据运行一个进程但是,我想使用默认凭据,我的意思是使用当前的用户名和密码,而不是通过以下代码:

var pass = new SecureString();
pass.AppendChar('p');
pass.AppendChar('a');
pass.AppendChar('s');
pass.AppendChar('s');
pass.AppendChar('w');
pass.AppendChar('o');
pass.AppendChar('r');
pass.AppendChar('d');
Process.Start("file.txt", Environment.UserName, pass, "");

因为应用程序可以在不同的计算机上运行,​​所以它应该获取当前的凭据并使用它们。

修改

问题是我要运行的文件是一个.bat文件,它会执行一些cmd命令,并且必须提供一个要使用的凭据

3 个答案:

答案 0 :(得分:2)

我不明白:如果您想使用默认凭据执行流程,请不要传递任何内容:

Process.Start("file.txt");

如果您需要更复杂的语法,重定向输入/输出,隐藏窗口或其他可以使用的内容ProcessStartInfo

用户编辑后编辑:
您根本无法恢复用户密码,不允许这样做 正如this link中所述:

  

您可以获取当前用户的当前身份   线程正在运行(不一定是登录用户)使用   WindowsIdentity.GetCurrent()
  或者,您可以登录   用户名通过Environment.UserName属性   这不保证   然而,作为运行当前过程的用户   没有   用于获取用户密码的Windows API,因为密码不会存储在其中   Windows操作系统。
  相反,Windows存储单向散列版本。

答案 1 :(得分:1)

只需使用Process.Start(@"Path")即可。通过不提供任何凭证,将采用当前用户的上下文。

答案 2 :(得分:0)

如果cmd中有人重新要求您提供凭据,则无法以编程方式获取当前用户的密码,因此您唯一要知道的是再次询问用户密码,但这样会可能是一个安全漏洞。