Windowsでは、昇格モード(管理者権限)でルビースクリプトを実行する必要があります。出来ますか?ルビースクリプトを昇格モードで実行する
答えて
ここでその方法を説明します。最も簡単な方法は、ShellExecute
を使用して昇格された(管理者)権限で実行可能ファイルを再起動することです。ルビー付き
あなたはこのようにそれを行う:あなたはWindowsのUACはこれが使い慣れたWindowsの管理者権限を要求し、ダイアログをポップアップあなたを与えるだろう有効にしている場合
require 'win32ole'
shell = WIN32OLE.new('Shell.Application')
shell.ShellExecute('path_to_ruby_program', nil, nil, 'runas')
。 [はい]をクリックすると、プロセスは管理者権限で実行されます。
ここでの秘密の秘訣は、文書化されていないShellExecute
操作パラメータrunas
を使用して、要求された操作を昇格させることです。また、関連
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx
手動で(場合によっては十分に良い解決策になるかもしれません)昇格したコマンドプロンプトのショートカットを作成する方法についての議論:
http://www.sevenforums.com/tutorials/3718-elevated-command-prompt-shortcut.html
もう一つの方法は、あなたを確保することです管理者以外のモードでスクリプトを実行しないでください。私はこの解決策が私の経験で満足できるものであることを発見しました。
スクリプトはそうのような管理者モードで実行されているかどうかを判断することができる-
def running_in_admin_mode?
query_admin_mode_cmd = 'reg query "HKU\S-1-5-19"'
output, exit_status = execute_command(query_admin_mode_cmd)
exit_status == 0
end
クレジットが彼の答えのためのピーターMcEvoyさんに行くhere
私は、この変更のためキャスパーとthegreendroidに感謝したいと思います溶液。
私はこのように一緒に置くより多くの研究をタッチで実行するための例を得ることができませんでした。私はexecute_command
の検索を少し行いました。なぜなら、Ruby 1.9.3のインストールは何をするのか分からず、何も見つけられなかったので、私はバックティックを使いました。 \
をエスケープする必要がありました。 2>&1
ビットはrubyが実際には空文字列の代わりに出力を受け取るので、その出力がRegexp /ERROR/
と一致する場合は管理者権限がないので、nil
を返すようにします。
これは管理者権限で再起動し、require
に入力した内容をその後ろのコメントとともに読み込みます。
require 'win32ole'
def running_in_admin_mode?
(`reg query HKU\\S-1-5-19 2>&1` =~ /ERROR/).nil?
end
if running_in_admin_mode?
require './main.rb' # load the actual program here.
else
path = 'rubyw.exe ' + File.expand_path(__FILE__) # optionally 'ruby.exe '
shell = WIN32OLE.new('Shell.Application')
shell.ShellExecute(path, nil, nil, 'runas')
end
あなたはdef
ブロックをドロップすると、簡潔にするために
if (`reg query HKU\\S-1-5-19 2>&1` =~ /ERROR/).nil?
にif
文を変更することができます。
WIN32OLE.new('Shell.Application').ShellExecute(path, nil, nil, 'runas')
可能ガッチャ:また、あなたはshell
変数を失う可能性がrunning_in_admin_mode?
が繰り返し失敗した場合、これはループを無限可能性がありますが、それは私のために完全に働きました。
'ShellExecute'の構文は以下のようになります。 ' shell.ShellExecute( "rubyw.exe"、path、 "runas") ' 詳細はこちらhttp://rubyonwindows.blogspot.com.es/ 2007/05/launching-apps-and-printing-docs-with.html –
他の著者のおかげで、私はこれで動作するようになった(Windows上でテストした8):
は、Rubyスクリプトの先頭にこれを追加します。
def running_in_admin_mode?
(`reg query HKU\\S-1-5-19 2>&1` =~ /ERROR/).nil?
end
unless running_in_admin_mode?
require 'win32ole'
shell = WIN32OLE.new('Shell.Application')
shell.ShellExecute("ruby", File.expand_path(__FILE__), nil, 'runas')
exit
end
# admin rights ensured
do_something()
それとも、ただ持っている可能性があり
cd full\path
ruby myscript.rb
とを含むlauncher.cmdは、管理者権限を持つこのCMDファイルを起動
Oあなたはrubyで試したことがありますか?
- 1. powershellの昇格モードでコマンドセットを実行する方法
- 2. 非昇降モードでファイル/フォルダのアクセス可能性を判断する(昇格中)
- 3. HTMLフォームからルビースクリプトを実行する
- 4. 昇格された特権でカスタム実行ファイルを実行するには?
- 5. 昇格して実行する.NETアプリを設定する
- 6. 最初に実行/昇格されるデリゲートとイベント?
- 7. UACが昇格しました。昇格していないコードを実行しました
- 8. 昇格または昇格しない - それはクエストです
- 9. 昇格を促さずに管理者としてアプリケーションを実行する
- 10. DefaultAppPoolはIISで特権昇格特権で実行されますか?
- 11. 実行上昇過程
- 12. 権限昇格 - エラー「template.cを」
- 13. "Validation"モードでAntを実行
- 14. PiPモードでAndroidアプリを実行する
- 15. 昇格ヘルパー&SMJobBlessでルートアクセスを取得
- 16. 私はwin xpの下で実行時に自分のプロセスを昇格することができます
- 17. java gksudo永続昇格
- 18. 特権昇格のアプリケーションリクエスト
- 19. UACスタイルの昇格プロンプト
- 20. C#管理者が昇格させたプロセスで(引数を使用して)プロセスを実行する方法
- 21. Zendでのフィールドの昇格検索Lucene
- 22. バッチファイル:昇格された特権を削除する(元のユーザーとしてコマンドを実行する)
- 23. 昇格された権限を持つProcessPanelスクリプトを実行しているIzPackを停止します
- 24. 実行可能ファイルがデプロイメントプロジェクトの一部である場合に昇格を要求していません
- 25. MYSQL行を昇順で作成する
- 26. 昇格した資格情報を使ってTortoise SVNをインストールする
- 27. WSS 3.0への昇格InfoPathフィールド
- 28. Win7管理者/昇格の問題
- 29. 権限昇格Windows 7の場合?
- 30. Silverlight OOBフルスクリーン昇格トラストの問題
管理者権限で端末(cmd.exe)を開き、そこからrubyを実行しますか? – Casper
はい、それは何かを上げる方法ではありませんか?スクリプトのルビーが自分自身を昇格させる方法が必要です。明らかに、ウィンドウズは管理者パスワードを要求するでしょう、それは私にとっては大丈夫です。 –