6

我的任务是创建一个安全的(Windows 版本)Excel 工作簿,该工作簿使用宏来验证用户是否有权查看内容。在 Excel 2010 for Windows 中,我使用该Environ("username")函数来完成此操作。

我遇到的问题是组织中的一些用户使用 Mac 来完成他们的日常工作,而Environ不是使用 OSX。

有谁知道另一种查找Mac用户名的方法?我在网上看过,但我能找到的只是如何找到计算机的唯一标识符,而不是用户名。

我正在尝试用 Mac 做些什么?

任何信息表示赞赏!

4

3 回答 3

6

您可以使用 AppleScript 返回用户名并从 VBA 运行它。

以下功能应该可以解决问题。

Function GetUserNameMac() As String
    Dim sMyScript As String

    sMyScript = "set userName to short user name of (system info)" & vbNewLine & "return userName"

    GetUserNameMac = MacScript(sMyScript)
End Function
于 2013-07-25T01:22:05.227 回答
5

Environ("USER")Environ("LOGNAME")在 Mac 上返回与 MacScript 答案相同的内容。

于 2017-11-21T14:53:19.440 回答
0

我在寻找与 Environ("COMPUTERNAME") 等效的 macOS 时发现了这个问题,因为我一直在使用它:

MacScript("do shell script ""hostname""")

如果要获取所有三个常见用户 ID,则返回用户帐户名称:

MacScript("do shell script ""stat -f$Su /dev/console""")

这将返回数字用户 ID,通常为 501:

MacScript("do shell script ""stat -f$Uu /dev/console""")

这将返回用户的真实姓名(如菜单栏中所示):

MacScript("do shell script ""id -P $(stat -f%Su /dev/console | cut -d : -f 8""")
于 2021-05-21T15:36:22.387 回答