【发布时间】:2021-04-12 08:28:20
【问题描述】:
假设我在 windows 中有一个名为 Temp 的目录。
当我右键单击它并打开属性,然后转到Sharing 选项卡时,我看到了这个:
字段Network Path 是Not Shared。
现在我点击Share并选择分享并点击确定。
Network Path 字段现在具有值:
有没有办法从命令行获取Network Path 的值。
理想情况下,我正在寻找一个将目录路径作为输入的命令,例如C:\Temp,如果目录是共享的,则输出\\S5XXXXXXN\Temp,如果目录不共享,则输出Not Shared。
背景:我有一个 NSIS 脚本来创建安装程序。安装过程结束应该吐出一个属性列表。输出所需的属性之一是目录的Network Path。在 NSIS 中,我可用的是 C:\Temp,我想在将其吐出之前将其转换为 \\S5XXXXXXN\Temp(如果可用)。
我尝试使用这个https://nsis.sourceforge.io/Get_Universal_Name,但它不起作用。
DetailPrint "My directory is:"
# value of MYDIR is C:\Temp
DetailPrint $MYDIR
Push $MYDIR
Call get_universal_name
Pop $MYDIRNET
DetailPrint "My dir after call is: "
DetailPrint $MYDIRNET
# above also prints C:\Temp even though its shared and has value \\S5XXXXXXN\Temp
更新:
@Anders 下面的答案就像一个魅力。
返回的列表有一个带有空白$3 的条目。只是要注意并在需要时添加必要的检查。
【问题讨论】:
-
.nsi 中的 RequestExecutionLevel 设置是什么?
-
@Anders RequestExecutionLevel 在我的 .nsi 中设置为管理员
-
@Anders 我尝试使用 WNetGetUniversalNameA 和 WNetGetUniversalNameW 以及像某些线程建议的那样.. 但没有区别.. 仍然是相同的结果..
标签: windows command-line powershell-3.0 nsis