我正在使用我的凭据运行一个进程但是,我想使用默认凭据,我的意思是使用当前的用户名和密码,而不是通过以下代码:
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命令,并且必须提供一个要使用的凭据
答案 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中有人重新要求您提供凭据,则无法以编程方式获取当前用户的密码,因此您唯一要知道的是再次询问用户密码,但这样会可能是一个安全漏洞。