1

我有一个 Mac Word VBA 应用程序,我需要在其中读取运行应用程序的计算机的 NetBIOS 名称。我可以使用以下代码获取用户名和计算机名,但我无法弄清楚如何读取 NetBIOS 名称。

Sub GetSystemInfo()
    Dim Script As String, UserName As String, ComputerName As String, NetBiosName As String
    Script = "set user to do shell script ""whoami"""
    UserName = VBA.MacScript(Script)
    Script = "computer name of (system info)"
    ComputerName = VBA.MacScript(Script)
End Sub

不幸的是,Mac 上的 VBA 没有直接获取它的方法,因此我正在寻找可以与 VBA 例程顺利集成的 Mac 脚本或其他编程方法。

任何帮助深表感谢。

4

2 回答 2

1

AFAICS 这不是管理员权限问题,而是沙盒问题。不确定您是否可以在不使用 AppleScriptTask 并使用您的docm/dotm 分发/安装合适的脚本的情况下解决该问题。例如

以下适用于没有管理员权限的用户:

创建一个名为

getNBName.applescript 

~/Library/Application Scripts/com.microsoft.Word 

包含以下代码

on doit(dummy)
    return (do shell script "defaults read /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName")
end doit

像这样使用 VBA:

Sub getNetBIOSName()
Dim theName As String
theName = AppleScriptTask("getNBName.applescript", "doit", "")
Debug.Print theName
End Sub

(注意,在调用脚本之前,您不能使用 VBA Open/Print/Close 将脚本动态写入 com.microsoft.Word 文件夹,这也可能是因为沙盒。)

于 2019-08-21T11:05:28.230 回答
1

有一种方法,但它需要管理员密码

do shell script "defaults read /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName" with administrator privileges
于 2019-08-20T19:06:35.343 回答