ユーザーのローカル管理者権限が許可されていない環境で働いています。全然。これは非常に便利ですが、プログラムの実行や、インストールのみを行う場合でも昇格された特権を必要とするソフトウェアをインストールするためにローカル管理者権限を持っている必要がある従業員にとっても、痛みになる可能性があります。私たちのベンダーから毎月の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
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/
管理者以外のユーザーがローカル管理者アカウントとしてプログラムを実行できるようにしますが、昇格のプロンプトは表示されません
以下は、ローカル管理者である別のアカウントとしてアプリケーションを実行するための回避策を設定するための手順です。ただし、プロセスを実行するアカウントは、PCのローカル管理者である必要はありません。
例
ユーザー名の作成(ドメインまたはローカル):
ProxyRunAsLocalAdmin
パスワードを作成(ドメインまたはローカル):
<SomeComplexPassword>
メモ
このアカウントは、何かを管理者権限で実行する必要があるPCでlocal admin
としてセットアップされます。実際に実行するエンドユーザーにローカル管理者権限を付与することはありません。
これは、ローカルマシンの非管理者には機能しない最後の手段であり、アカウント(エンドユーザーやグループ)にregistry
およびfile system
レベルのオブジェクトを明示的に指定します。アクセスできません。
セキュリティ
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"
重要:Start In:フィールドを囲む二重引用符は、パスにスペースがありません。
その他の設定に関する注意事項
セキュリティに関するメモ
コントロール
このソリューションには、などのいくつかのコントロールがあります。 。 。
まあ、ありがたいことに、ローカル管理者を排除した場合、あなたが残した唯一の本当のオプションはCMD行です。 Powershellは良いですが、これでバッチを実行することもできると思います。
これらのそれぞれの欠点は、ユーザーがスクリプトを開く方法を知っている場合、あなたがスクリプトに何を入れたかを見ることができるということです。これを回避する唯一の方法は、コードを実行するのではなく、開くときにスクリプトをロックするコマンドを記述して、パスワードを要求することです。
多分UACに対処するために書かれたバッチまたはPowerShell?
UACをバイパスする他のオプションでは、システムアカウントでプログラムを実行しています。このアカウントはUACシステムにUACを持たないためです。インターネット上にいくつかのソースコードがあります。完全なソリューションはrobotronic.de/runasadminen.htmlにあります。このソリューションは、管理者以外のアカウントにも使用できます。