2012-02-17 60 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裏面有人再次詢問你的憑證,那麼沒有辦法以編程的方式獲得當前用戶的密碼,所以你唯一擁有的就是再次詢問用戶密碼,但這可能是一個安全漏洞。