2010-02-20 152 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