web-dev-qa-db-ja.com

非管理者ユーザーとしてのチョコレート

ホテルのネットワークでソフトウェアのインストールにChocolateyを使い始めました。 Win 2008でドメインを設定していますが、すべてのユーザーが管理者ではありません。

したがって、ドメインの管理者ではない(マシン上にもない)ユーザーJOEと、両方の管理者であるユーザーPETERがあり、JOEとしてログインしているとしましょう。プロンプト(またはPowerShell)を管理者として開くと、Windows UACは管理者のユーザー名/パスワードを要求します。だから私はそれをピーターの資格で満たします。次にChocolatey(C:\ProgramData\Chocolatey内)をインストールし、C:\ProgramData\Chocolatey\libsにパッケージをインストールします。そして、それは結構です。

アプリがすべてのユーザー向けのインストール(Sublime Text 3など、C:\Program Usersフォルダーにインストールされている)の場合、すべてが正常に実行されます。しかし、「シングルユーザー」インストール(C:\Users\USERNAME\AppData\...にインストールされているWunderlistなど)を実行すると、JOEのAppDataではなくPETERのAppDataにインストールされます。

インストーラーを手動で実行すると、PETERの資格情報を要求されますが、アプリはJOEのユーザーパスにインストールされます。

Chocolateyでも同じ動作が得られますか?私は何か間違ったことをしていますか、これを何らかの方法で回避できますか?

6
Leonardo Puglia

管理ユーザーと非管理ユーザーの両方でそれを行う方法を発見しました。ドキュメントの Chocolatey non-administrative セクションでは、Chocolateyを非管理者としてインストールするには、最初にChocolateyが必要な場所を指すChocolateyInstall環境変数を定義する必要がありますインストールされ、すべてのユーザーがアクセスできます(私はC:\Users\Public\Chocolateyフォルダを使用しました)。この変数は、マシンレベルまたはユーザーレベルで設定できます。マシンレベルで定義する場合、同じChocolateyインストールを管理パッケージと非管理パッケージの両方のインストールに使用できます。変数を設定した後、Chocolateyのインストールに進む必要があります。これは、管理者ユーザーまたは非管理者ユーザーのいずれかとして実行できます。

次に、パッケージをインストールするには、2つの方法があります。管理者アクセスが必要な場合は、管理者PowerShell(またはコマンドプロンプト)を開き、choco install <package>を呼び出します。次に、アプリは管理者ユーザーとしてインストールされます(私の質問ではPETER)。管理者アクセスを必要としない場合は、管理者以外のPowerShell(またはコマンドプロンプト)を開いて、choco install <package>を呼び出すことができます。アプリは現在のユーザー(私の質問ではJOE)にインストールされます。

私はそれをテストしていませんが、別のオプションは、ある場所を指すマシンレベルのChocolateyInstall変数と別の場所を指すユーザーレベルのChocolateyInstall変数を設定することです。次に、Chocolateyを管理者としてインストールすると、「マスター」のChocolateyインストールが作成されます。これは、パッケージの大部分をインストールするために使用できます(ドキュメントに従って、管理者アクセスが必要です)。共通ユーザーとして再度インストールすると、「ユーザー」のChocolateyインストールが取得されます。これは、特定のパッケージ(Wunderlistなど)のインストールに使用できます。これにより、「admin」のChocolateyインストールを妨げることなく、そのパッケージを任意の数のユーザーにインストールできます。

欠点は、2つのChocolateyインストールがある場合、パッケージは管理者レベルとユーザーレベルの両方で管理する必要があるため、アップグレードは「マスター」レベルと「ユーザー」レベルの両方で行う必要があることです。

私の場合、マシンごとにユーザーが1人しかいないため、ユーザーがアプリをインストールしないため、最初のオプションを選択しました。

それがこれを探している誰かに役立つことを願っています。

2
Leonardo Puglia

Loenardo Pugliaの回答ありがとうございます。今日は本当に役に立ちました。私の例は$USERPROFILE%/AppDataのSlackインストールでしたので、この問題が発生しました。私も、Chocolateyの管理者および非管理者による使用が必要です。

(私がしたように)すでにチョコレートとしてチョコレートをインストールしている場合、Active Directoryの下でも、移動して非管理者にすることができます。その後、すべてのライブラリを保持できます。少なくとも私は2017年2月23日にしました。これはChocolateyのオープンソースバージョンでした。

デフォルトでChocolateyはC:\ProgramData\Chocolateyにインストールされます

そして、システム環境変数ChocolateyInstall = C:\ProgramData\Chocolateyを設定します。 (これを設定するとbeforeCocolateyをインストールすると、そのディレクトリにインストールされます。遅すぎます。すでにインストールしています。)

そして、PATHC:\ProgramData\Chocolatey\binを追加します。

管理者アカウントから、そのChocolateyフォルダーを保護されていない領域に移動できます。私はC:\Chocolateyを選択しましたが、管理者以外のユーザーがアクセスできるようにできるパスはすべて機能するはずです。

次に、フォルダC:\Chocolateyの権限をFull controlを持つUsersに設定します。

次に、2つの環境変数[ 参照 ]を再設定します。

setx ChocolateyInstall "C:\Chocolatey" /m

/mは、ユーザーではなくシステム全体の環境変数にします。

パスについては、このマイナーなインプレース編集の場合、コマンドラインで二重引用符を操作するよりも、レジストリを編集する方を好みます。

regedit.exe

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentに移動しました

pathを変更し、必要に応じてChocolateyエントリを編集して、OKを押します。

場合によっては、env varsの新しい値を確認するために再ログインする必要があります。 [ 質問に対するコメントでの議論 ]

0
john v kumpf