web-dev-qa-db-ja.com

標準ユーザーが昇格時のプロンプトなしでローカル管理者としてプログラムを実行できるようにする

ユーザーのローカル管理者権限が許可されていない環境で働いています。全然。これは非常に便利ですが、プログラムの実行や、インストールのみを行う場合でも昇格された特権を必要とするソフトウェアをインストールするためにローカル管理者権限を持っている必要がある従業員にとっても、痛みになる可能性があります。私たちのベンダーから毎月のDVDを受け取る簿記のユーザーがいて、これには多くの必要なレポートが含まれています。レポートを確認してバックアップを作成するには、DVDで実行可能ファイルを実行する必要があります。実行可能ファイルをインストールするには、管理者権限が必要です。そのため、ここにいるので、毎月.exeを実行すると、UACが表示され、インストーラーを実行するために非常に必要な情報を提供します。

これが1回限りのプログラムである場合は、Microsoft Application Compatibility Toolkitギミックを使用してUACをバイパスします http://www.techrepublic.com/blog/windows-and-office/selectively-disable-uac-for-your -trusted-Vista-applications / しかし、これは毎月彼女に送られる新しいDVDであるため、彼女がこの操作に使用できる何らかのツールが必要です。

私はServer Faultを見回し、Google-Fuも行いましたが、有用なものは何も見つかりませんでした。私はユニークな状況の一部の1つかもしれません。

私は、Poweshellを使用してツールを作成したいと考えています。理想的には、DVDを挿入して、DVDドライブを確認し、UACプロンプトなしのローカル管理者としてsetup.exeファイルを実行するPoweshellツールを(彼女のデスクトップショートカットから)起動できるようにしたいのですが、資格情報を提供する必要はありません。

私がこれまでに持っているのは、現時点ではジャンクがつながっているものです。私はPowershell Jediではありません。私はPoweshellのパダワンです。私は必要なものの半分を持っています。パスワードを保存する必要があるので、スクリプトを実行するたびにパスワードを定義して入力する必要はありません。私はこれを可能な限りスムーズでクリック数をできるだけ少なくしたいと考えています。

資格については、パスワードが変更されないため、ローカル管理者アカウントを使用することを選択しています。ローカル管理者アカウントは仕事を完了します。 Powershellがスクリプトを実行するたびにアカウントを取得できるように、そのアカウント情報をコンピューターに保存する必要があります。したがって、これはパス変数内の暗号化されたファイルである必要があります。

# define path to store password and input password 
$path = "C:\Users\User\Password folder"
# get the encrypted local admin password from user path
$encpwd = Get-Content $path\admin.bin
# convert admin file to secure string 
$passwd = ConvertTo-SecureString $encpwd
# define local admin credential 
$cred = new-object System.Management.Automation.PSCredential 'computer name\local admin',$passwd
# go to DVD drive launch setup.exe as local admin with no user input required
Set-Location D:\
Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe

私はこれに対していくつかの反対票を獲得するかもしれませんが、既存の変数または新しい変数に「Read-Host "パスワードの入力に関する何らかのテキスト" -AsSecureString "」を定義して配置する必要がある場所を知っています。プロセスにパスワード入力を取得する必要があります。私はいくつかのスポットを試しました。考え?知恵?無理だよ?

Windows 7 Pro Powershell v4

8
Art.Vandelay05

Powershellで目標を達成する方法を見つけました。まず、暗号化されたパスワードを作成してファイルに保存するために、スクリプトをユーザーのコンピューターで(1回だけ)実行する必要があります。注:保存されたパスワードファイルは、ローカル管理パスワードをプレーンテキストで含むtxtファイルではありません。これは、ConvertFrom-SecureStringコマンドレットの出力です。

まず、パスワードを入力してファイルに保存するスクリプトです。これは、ターゲットコンピュータで1回だけ実行する必要があります。

# Enter encrypted password once and store to file; define variables 
$path = "C:\Folder\Folder\"
$passwd = Read-Host "enter desired password" -AsSecureString
$encpwd = ConvertFrom-SecureString $passwd
$encpwd > $path\filename.bin

これで、ローカル管理者としてDVDからプログラムを起動するためにユーザーが実行するスクリプトです。 DVDをディスクドライブに挿入した後、デスクトップショートカットからスクリプトを実行します。スクリプトを起動した後、プログラムは完全に実行され、彼女は私または他の管理者(彼女が大好き)に支援を求めなくてもこれを実行できます。

# define path to store password and input password 
$path = "C:\folder\folder"
# get the encrypted password from the path
$encpwd = Get-Content $path\filename.bin
# convert file to secure string 
$passwd = ConvertTo-SecureString $encpwd
# define needed credential 
$cred = new-object System.Management.Automation.PSCredential 'computer name\account name',$passwd
# go to DVD drive launch setup.exe as user with privileges to launch the program with no user input required
Set-Location D:\
Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe

このPowershell.orgの記事は私の回答を得るために役立ちました http://powershell.org/wp/2013/11/24/saving-passwords-and-preventing-other-processes-from-decrypting-them/

1
Art.Vandelay05

管理者でなくても管理者として実行

管理者以外のユーザーがローカル管理者アカウントとしてプログラムを実行できるようにしますが、昇格のプロンプトは表示されません

以下は、ローカル管理者である別のアカウントとしてアプリケーションを実行するための回避策を設定するための手順です。ただし、プロセスを実行するアカウントは、PCのローカル管理者である必要はありません。


Windowsの回避策(以下のすべての注記を参照)

  1. ユーザー名の作成(ドメインまたはローカル):ProxyRunAsLocalAdmin

  2. パスワードを作成(ドメインまたはローカル):<SomeComplexPassword>

メモ

  • このアカウントは、何かを管理者権限で実行する必要があるPCでlocal adminとしてセットアップされます。実際に実行するエンドユーザーにローカル管理者権限を付与することはありません。

  • これは、ローカルマシンの非管理者には機能しない最後の手段であり、アカウント(エンドユーザーやグループ)にregistryおよびfile systemレベルのオブジェクトを明示的に指定します。アクセスできません。

セキュリティ

  • ドメイン管理者以外には、この情報は必要ありません。エンドユーザーと共有しないでください。

RUNASを使用したショートカットの作成(これはD:\Setup.exeの可能性があります)

ショートカットProperties

TARGETフィールドの例(下記):

%systemroot%\system32\runas.exe /user:domain\ProxyRunAsLocalAdmin /savecred "C:\Program Files\BlueStacks\HD-StartLauncher.exe"

START IN例:"C:\Program Files\BlueStacks"

enter image description here

重要:Start In:フィールドを囲む二重引用符は、パスにスペースがありません。


その他の設定に関する注意事項

  • この目的でドメインユーザーアカウントまたはローカルPCユーザーアカウントを作成し、そのようなソリューションが必要な場合はいつでもローカルマシンにローカル管理者権限を与えることができます。
  • ローカル管理者でなくてもそのプロセスを実行する必要があるユーザーとしてPCにサインオンするときは、「RUNASなど」を使用してショートカットを実行する必要があります。これを行うと、資格情報を入力する必要があります。これを1回キャッシングしますが、[〜#〜] runas [〜#〜を使用してプロセスを実行するたびに必要になることはありません。 ]および/ SAVECRED再び、同じSAMEユーザーアカウントプロファイルから進められます。
  • このアカウントへのこのパスワードは誰とも共有されません。domain\ systems管理者だけがこの情報を持ち、マシンごとのユーザーごとに必要な場所にプラグインします。これは、Windowsユーザーアカウントごとのプロファイルタイプの取引でもあります。したがって、ユーザーの新しいプロファイルを作成し、このソリューションが必要な場合は、ショートカットを再度実行して、資格情報が(管理者によって)ユーザーのプロファイルにもキャッシュされるようにする必要があります。

セキュリティに関するメモ

  1. グループポリシーを使用してアカウントのローカルログインアクセスを制限することはできません。そうした場合、アカウントはインタラクティブにRUNASを実行できません。セキュリティのためにすでにそれを試しましたが、適切に機能させることができませんでした。
  2. これはローカル管理者権限を持つキャッシュされた資格情報であるため、技術的には、これが保存されているエンドユーザーは、これと同じRUNAS手法を別のEXEに適用するか、可能であればコマンドラインを使用できます。これは、管理者がリスクを含め、このソリューションでメリットとデメリットを比較検討する必要があることを意味します。おそらく、エンドユーザーにローカル管理者を実際に許可せずに、継続的または繰り返し必要とされる信頼できる人々またはアイテムに対してこれを許可することは、問題ありません。

コントロール

このソリューションには、などのいくつかのコントロールがあります。 。 。

  • Runasの実行を許可するマシンを選択してください
  • これを実行する各マシンのユーザープロファイルを選択します
  • このマシンのユーザープロファイルに移動して、最初は認証情報を入力する必要があります。
  • ローカルまたはADアカウントはローカルマシンのIPアドレスのメンバーであるため、公開はドメインレベルではなくPCレベルのローカルマシンに行われます。
  • このアカウントにネットワークリソースへのアクセスを許可しないでください(必要に応じて、個々のPCごとにローカルPC管理者のみ)
  • この機能を一括で無効にしたい場合(ドメインアカウントを使用している場合)、アカウントを無効にするか、パスワードを変更します
  • 他の人がこれらの影響などを認識していることを確認し、あなたがこれを使用するかどうかを決定する人ではないように承認してもらいます。
4
Pimp Juice IT

まあ、ありがたいことに、ローカル管理者を排除した場合、あなたが残した唯一の本当のオプションはCMD行です。 Powershellは良いですが、これでバッチを実行することもできると思います。

これらのそれぞれの欠点は、ユーザーがスクリプトを開く方法を知っている場合、あなたがスクリプトに何を入れたかを見ることができるということです。これを回避する唯一の方法は、コードを実行するのではなく、開くときにスクリプトをロックするコマンドを記述して、パスワードを要求することです。

多分UACに対処するために書かれたバッチまたはPowerShell?

0
Jonas Lear

UACをバイパスする他のオプションでは、システムアカウントでプログラムを実行しています。このアカウントはUACシステムにUACを持たないためです。インターネット上にいくつかのソースコードがあります。完全なソリューションはrobotronic.de/runasadminen.htmlにあります。このソリューションは、管理者以外のアカウントにも使用できます。

0
Helenri