Windows命令行历史记录

时间:2010-02-20 00:06:50

标签: c++ windows winapi system webdav

我需要使用C以编程方式在Windows中安装WebDAV卷,我想我将使用system()来实现这一点(通过'net use'命令)...但是,由于网络使用需要密码是用纯文本写的,我只是想确保在Windows命令行shell中没有记录命令...我知道在Mac OS X和Linux中某些情况下命令可以记录在.bash_history文件中,所以我想在Windows中可能会发生类似的事情。我不这么认为,因为Google上没有任何内容。

5 个答案:

答案 0 :(得分:1)

shell有历史记录,但它只存储在内存中而不是磁盘上的日志中。也就是说,它最终可能会出现在交换文件中,并且可以(略微不重要)发现。然后,如果你使用类似WNetAddConnection2之类的东西在你自己的程序中直接建立了连接,那么无论如何它最终都会出现在交换文件中。

答案 1 :(得分:1)

最好使用'CreateProcess'并将输入和输出重定向到您的代码,并通过写入stdin(将被重定向到'Net use'命令)将其提供给它,并且读取输出,这样,密码输入就不会被记录......这在理论上......如果popen实现存在,我不是100%自信......因为它符合POSIX标准并且没有在标准C中找到......它存在于* nix世界......

编辑:好消息,我发现一些使用CreateProcess包装器模拟popen的代码,只是觉得它可能会有所帮助。代码需要稍微调整一下......这是GPL v2许可证......所以要记住......

希望这有帮助, 最好的祝福, 汤姆。

答案 2 :(得分:1)

不是您问题的答案,而是net use检查WNetAddConnection2 win32功能

答案 3 :(得分:0)

windows命令shell没有任何内置命令日志记录,它使用外部命令(doskey),我不认为system()命令的命令提示符安装了doskey,但是如果你想确定,请使用system()执行

doskey /history

,它将输出该命令提示符实例的命令行历史记录。

答案 4 :(得分:0)

正常的命令界面没有历史记录,除非你明确地激活它(但我记不起这个命令可用,最后我检查的是在DOS / windows 95天)。 Visual Studio命令提示符确实有历史记录 - 但我怀疑它会在您关闭提示时保留。