Chocolatey 作为非管理员用户

Chocolatey 作为非管理员用户

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

因此,假设我有一个用户 JOE,他不是域上的管理员(也不是机器上的管理员),还有一个用户 PETER,他同时是域和机器上的管理员,并且我以 JOE 身份登录。当我以管理员身份打开提示符(或 powershell)时,Windows UAC 会要求输入管理员用户名/密码。因此,我用 PETER 的凭据填写它。然后,我可以安装 Chocolatey(在 中C:\ProgramData\Chocolatey)并在 上安装软件包C:\ProgramData\Chocolatey\libs。这样就没问题了。

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

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

我可以用 Chocolatey 获得相同的行为吗?我做错了什么吗?或者我能以某种方式解决这个问题吗?

答案1

我已经发现了如何为管理员和非管理员用户做到这一点。在巧克力般的非管理文档的“安装 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,则必须同时在管理员和用户级别管理软件包,因此必须同时在“主”级别和“用户”级别进行升级。

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

希望它能帮助正在寻找此问题的人。

答案2

感谢 Loenardo Puglia 的回答。今天真的帮了我大忙。我的例子是 Slack 安装进来,$USERPROFILE%/AppData所以我遇到了这个问题。我也需要管理员和非管理员使用 Chocolatey。

如果你已经以管理员身份安装了 chocolatey(就像我一样),你可以移动并将其变为非管理员权限,即使在 Active Directory 下也是如此。然后您可以保留所有库。至少我在 2017 年 2 月 23 日这样做了。这是 Chocolatey 的开源版本。

Chocolatey 默认安装到C:\ProgramData\Chocolatey

并设置系统环境变量ChocolateyInstall= C:\ProgramData\Chocolatey。(设置此安装 Cocolatey 将导致它安装在该目录中。对我来说太晚了;我已经安装了它。)

并添加C:\ProgramData\Chocolatey\binPATH

您可以从管理员帐户将 Chocolatey 文件夹移动到不受保护的区域。我选择了C:\Chocolatey任何可以让非管理员用户访问的路径。

然后我将文件夹的权限设置C:\ChocolateyUsers具有Full control

然后重新设置2个环境变量[参考]。

setx ChocolateyInstall "C:\Chocolatey" /m

/m使其成为系统范围的环境变量,而不是用户。

对于路径,对于这个小的就地编辑,我更喜欢编辑注册表,而不是在命令行上使用双引号。

regedit.exe

导航至HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

根据需要修改path并编辑 Chocolatey 条目并点击OK

有时您必须重新登录才能查看环境变量的新值。[问题评论中的讨论]

相关内容