Chocolatey 作为非管理员用户

Leo*_*lia 10 windows uac powershell chocolatey

我开始在我酒店的网络中使用 Chocolatey 来安装软件。我在 Win 2008 上设置了一个域,但我的所有用户都不是管理员。

所以,假设我有一个用户 JOE,它不是域的管理员(也不是在机器上)和一个用户 PETER,它是两者的管理员,并且我以 JOE 身份登录。当我以管理员身份打开提示(或 powershell)时,Windows UAC 要求输入管理员用户名/密码。所以我用 PETER 的凭据填充它。然后我可以安装 Chocolatey (in C:\ProgramData\Chocolatey) 并在C:\ProgramData\Chocolatey\libs. 这很好。

如果该应用程序是为所有用户安装的(例如 Sublime Text 3,安装在C:\Program Users文件夹中),则一切正常。但是,当我运行“单用户”安装(例如 Wunderlist,安装在C:\Users\USERNAME\AppData\...)时,它会安装在 PETERAppData而不是 JOE 上AppData

如果我手动运行安装程序,它会要求我提供 PETER 的凭据,但该应用程序安装在 JOE 的用户路径中。

我可以用 Chocolatey 得到同样的行为吗?我做错了什么还是可以以某种方式解决这个问题?

Leo*_*lia 5

我发现了如何为管理和非管理用户执行此操作。在文档的Chocolatey 非管理部分,它说要以非管理员身份安装 Chocolatey,首先我们必须定义一个ChocolateyInstall环境变量,指向应该安装 Chocolatey 并且所有用户都可以访问的位置(我使用了C:\Users\Public\Chocolatey文件夹)。该变量可以在机器或用户级别设置。如果我们在机器级别定义它,则相同的 Chocolatey 安装可用于管理员和非管理员软件包安装。设置完变量后,我们应该继续 Chocolatey 安装,这可以作为管理员或非管理员用户完成。

然后,要安装任何软件包,有两种方法可以做到:如果它需要管理员访问权限,我们可以打开一个管理员 PowerShell(或命令提示符)并调用choco install <package>它。然后该应用程序将作为管理员用户安装(我的问题中的 PETER)。如果它不需要管理员访问权限,那么我们可以打开一个非管理员 PowerShell(或命令提示符)并调用choco install <package>它。该应用程序安装给当前用户(我的问题中的 JOE)。

我没有测试过它,但我相信另一种选择是设置一个ChocolateyInstall指向一个位置的机器级变量和一个ChocolateyInstall指向另一个位置的用户级变量。然后,如果我们以管理员身份安装 Chocolatey,我们将获得“主” Chocolatey 安装,可用于安装大多数软件包(根据文档需要管理员访问权限)。如果我们以普通用户身份再次安装它,我们将获得一个“用户” Chocolatey 安装,可用于安装某些特定的包(如 Wunderlist)。这样,该软件包可以安装给任意数量的用户,而不会干扰“管理员”Chocolatey 安装。

缺点是有 2 个 Chocolatey 安装,软件包必须在管理员和用户级别进行管理,因此必须在“主”和“用户”级别进行升级。

就我而言,由于每台机器只有一个用户,而且我的用户没有安装任何应用程序,因此我选择了第一个选项。

希望它可以帮助寻找这个的人。