2010-02-20 154 views
2

我需要以編程方式在Windows中使用C掛載WebDAV卷,我想我將使用system()來實現此目的(通過'net use'命令)...但是,既然淨使用要求密碼寫在純文本中,我只是想確保沒有在Windows命令行shell中運行的命令的日誌記錄...我知道在Mac OS X和Linux在某些情況下命令可以記錄在文件.bash_history,所以我想也許在Windows中發生了類似的事情。我不這麼認爲,因爲谷歌上沒有任何東西出現。Windows命令行歷史

回答

1

shell有歷史記錄,但它只存儲在內存中而不是磁盤上的日誌。也就是說,它可能會在交換文件中結束並開放(稍微不重要)發現。然後再次,如果你使用WNetAddConnection2之類的東西直接在自己的程序中進行連接,那麼它最終可能會在交換文件中結束。

+0

謝謝,我沒有做足夠的研究,所以我還沒有找到WNetAddConnection2 ......花了擺弄周圍的位,但我終於明白了,它效果很好! – AriX 2010-02-21 15:34:52

0

Windows命令shell沒有任何內置命令日誌記錄,它使用一個外部命令(doskey),我不認爲命令提示符從system()命令安裝了doskey,但如果你想要確定,使用system()來執行

doskey /history 

並且它將輸出該命令行提示符實例的命令行歷史記錄。

0

一個正常的命令界面沒有歷史,除非你明確地激活它(但我不記得這個命令可用,最後我檢查是在DOS/Windows 95天)。 Visual Studio命令提示符確實有歷史記錄 - 但我懷疑它在關閉提示時保留。

1

使用'CreateProcess'並將輸入和輸出重定向到您的代碼並通過寫入標準輸入(將被重定向到「網絡使用」命令)將其輸入到該代碼中可能會更好,並讀取輸出,這樣,密碼輸入將不會被記錄...這是理論上的......如果popen實現存在,我不是100%信心....因爲它符合POSIX標準,並且在標準C中找不到。 ..它存在於* nix的世界......

編輯:好消息,我發現一些代碼,使用圍繞CreateProcess的包裝模仿popen,只是認爲這可能會有幫助。代碼將需要調整一下...這是GPL v2許可證.. so..something要記住...

希望這會有所幫助, 最好的問候, 湯姆。

1

不回答你的問題,但代替net use檢查WNetAddConnection2 Win32函數

+0

是的,那就是我最終做的事情......我選擇了傑裏的回答,而不是因爲他先說了。 感謝您的幫助! – AriX 2010-02-21 15:35:19