【问题标题】:How do I use the drive I just mapped on net use? (C++)如何使用我刚刚映射到网络使用的驱动器? (C++)
【发布时间】:2016-07-04 15:50:45
【问题描述】:

我正在用 C++ 编写代码,该代码将使用“net use * \server...etc”映射到最近的可用驱动器,然后我想在上面打开一个文件。

是否有一个命令可以让我与这个新驱动器进行交互,而无需事先知道它映射到哪个驱动器上? (通常是驱动器 Z:,但并非总是如此!)

更清晰的例子:

 system("net use * \\server\folder\ p455word /user:server\user /p:no")

(output: "Server succesfully mapped to drive Z:")

然后我通常会尝试打开文件:

system("Z:\\folder\mydoc.docx")

我的问题是如何做到这一点:

system("*\\\folder\mydoc.docx")

使用 * 是计算机选择映射到的任何驱动器,或者是否有解决方法。谢谢!

【问题讨论】:

  • 识别不出来就不能用,就这么简单。但是,经过一些细微修改的程序肯定能够记住它分配的驱动器号吗?或者它可以使用无驱动器号的 UNC 路径。
  • 反对票和自鸣得意的回复是怎么回事?我已经查过了,找不到答案。 “如果你没有什么好说的……”
  • 加载更多需要的细节,比如;你研究了什么?你都尝试了些什么?结果如何?您当前的(最小的、完整的示例)代码是什么样的?我可以理解反对意见 - 这是一个低质量的问题,需要做更多的工作来展示已经为解决问题所做的努力。
  • 您可以阅读“如何提问”页面,以便更好地格式化您的问题
  • Alf:我的评论是在您编辑帖子并添加无驱动器号解决方案之前。感谢您的贡献:)

标签: c++ dictionary networking drive


【解决方案1】:

如果您在这里寻找一些net use 特有的魔法,您会失望的。您的程序只是将一个文本字符串传递给 Windows 外壳程序,并且对您执行的命令一无所知或信息。除了读取命令的文本输出之外,它当然无法提取有关该调用结果的状态信息。

幸运的是,文本输出就是您所需要的——您的报价表明分配的驱动器号就在那里。您只需将其拉出,然后通过从现在已知的驱动器号和路径的固定部分构建一个字符串来动态构造后续的system 调用。

system 并不是真正为这些而设计的。 Here's how to execute a command and retrieve its output。从字符串"Server succesfully mapped to drive Z:" 中提取驱动器号也是一个单独的问题。一般来说,当您遇到问题时,将其分解为组件;那么你就可以成功地“查找”了。

【讨论】:

  • 感谢您的建议!但是,考虑到它变得非常复杂,我找到了 cmets 中建议的解决方法。如果有人遇到同样的问题,您可以使用其 UNC 路径“\\server\folder”连接到它,而无需提示输入密码,无论驱动器映射到何处。即:net use * \\kratos\folder passw0rd /user:kratos\zeus /p:no 可以简单地访问为: explorer \\kratos\folder 不管它是映射到 Q:A: 还是 Z::)
  • @J.Doe:这与 C++ 无关,因此不在问题范围内。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多