![Chocolatey 作为非管理员用户](https://linux22.com/image/1498469/Chocolatey%20%E4%BD%9C%E4%B8%BA%E9%9D%9E%E7%AE%A1%E7%90%86%E5%91%98%E7%94%A8%E6%88%B7.png)
我开始在酒店网络中使用 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\bin
到PATH
。
您可以从管理员帐户将 Chocolatey 文件夹移动到不受保护的区域。我选择了C:\Chocolatey
任何可以让非管理员用户访问的路径。
然后我将文件夹的权限设置C:\Chocolatey
为Users
具有Full control
。
然后重新设置2个环境变量[参考]。
setx ChocolateyInstall "C:\Chocolatey" /m
/m
使其成为系统范围的环境变量,而不是用户。
对于路径,对于这个小的就地编辑,我更喜欢编辑注册表,而不是在命令行上使用双引号。
regedit.exe
导航至HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
根据需要修改path
并编辑 Chocolatey 条目并点击OK
。
有时您必须重新登录才能查看环境变量的新值。[问题评论中的讨论]