【问题标题】:Get NetBIOS Name on Mac OS X Using VBA or AppleScript使用 VBA 或 AppleScript 在 Mac OS X 上获取 NetBIOS 名称
【发布时间】:2019-12-25 17:22:52
【问题描述】:

我有一个 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 脚本或其他编程方法。

非常感谢任何帮助。

【问题讨论】:

    标签: vba macos ms-word applescript netbios


    【解决方案1】:

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

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

    创建一个名为

    的AppleScript
    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 文件夹,这也可能是因为沙盒。)

    【讨论】:

      【解决方案2】:

      有办法,但需要管理员密码

      do shell script "defaults read /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName" with administrator privileges
      

      【讨论】:

      • 谢谢。知道位置会有所帮助。我现在需要弄清楚如何在没有管理员权限的情况下静默阅读它。即使将 plist 文件作为文本文件流输入并解析文本字符串,也会导致用户提示授予对文件的访问权限。不是世界末日,而是不太理想的 IMO。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 2018-01-27
      • 2012-03-16
      相关资源
      最近更新 更多