【发布时间】:2015-09-10 15:03:14
【问题描述】:
我正在与之合作的公司有一个用 ye olde vb6 编写的程序,该程序更新非常频繁,大多数客户从映射的网络驱动器运行可执行文件。这实际上很少有问题,其中最大的是自动更新。目前更新程序(用 c++ 编写)重命名现有的 exe,然后下载新版本并将其放入旧版本的位置。这通常可以正常工作,但在某些环境中它会失败。
解决方案正在运行this command from microsoft:
for /f "skip=4 tokens=1" %a in ('net files') do net files %a /close
此命令关闭所有共享的网络文件(嗯...大多数),然后更新程序可以替换 exe。
在 C++ 中,我可以使用 System(""); 函数来运行该命令,或者我可以重定向 net files 的输出,并遍历结果以查找有问题的特定文件并运行 net file /close 命令来关闭它们.但是,如果存在具有类似功能的 winapi 函数以提高可靠性和未来安全性,那就更好了。
有什么方法可以让我以编程方式查找所有网络共享文件并关闭相关文件?
【问题讨论】:
-
听起来这是一个特定于 Windows 的 C++ 问题...
-
是的,抱歉我加个标签
-
我建议你搜索 MSDN 找到一些可以帮助你关闭网络文件的 Windows API。
-
好电话,@ThomasMatthews 我经常忘记做显而易见的事情。找到decent resource,一旦我得到一个可行的解决方案,我会发布一些额外的信息。
-
请注意,虽然这确实会关闭文件,但这也意味着客户端在下次需要请求分页可执行文件时会崩溃。
标签: c++ windows auto-update