2012-02-17 54 views
1

我用我的凭据运行的进程,但是,我想使用默认的凭据,我的意思是使用当前用户名和密码,足不出户throuh下面的代码:默认凭据启动过程

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命令,它必须提供一个证书才能使用

+1

这是开玩笑吧? – 2012-02-17 14:29:10

+0

当你启动一个进程时,你默认模拟当前用户... – 2012-02-17 14:29:33

+0

这是与你的问题相关http://stackoverflow.com/questions/9322516/run-bat-file-from-c-sharp?为什么重复呢? – Marco 2012-02-17 14:30:27

回答

1

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

+0

但问题是我想运行的文件是一个.bat文件,将执行一些cmd命令,它必须提供一个凭据使用 – BOSS 2012-02-17 14:27:56

+0

必须使用哪些凭据为了在客户端的PC上运行.bat文件?它是否必须是AD用户? – Alex 2012-02-17 14:30:17

2

我不明白:如果你想使用默认凭据执行过程中,根本就没有任何人都可通过:如果您需要更复杂的语法

Process.Start("file.txt"); 

,重定向输入/输出,隐藏窗口或其他东西你可以用ProcessStartInfo

用户编辑后,编辑:
你根本无法恢复用户密码,这是不允许的。
据报道在this link

下使电流 线程运行(不一定登录的用户)使用 WindowsIdentity.GetCurrent()你可以得到用户的当前身份。
或者,您可以通过Environment.UserName属性获取登录的 用户名。
但不保证 是运行当前进程的用户。
没有 Windows API获取用户密码,因为密码不存储在 Windows中。
取而代之的是Windows存储单向哈希版本。

0

如果在cmd里面有人再次询问你的凭证,那么没有办法以编程的方式获得当前用户的密码,所以你唯一拥有的就是再次询问用户密码,但这可能是一个安全漏洞。