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. 非昇降モードでファイル/フォルダのアクセス可能性を判断する(昇格中)
- 4. HTMLフォームからルビースクリプトを実行する
- 5. 昇格したコマンドプロンプトプロセスの実行
- 6. 自己昇格スクリプト+実行ポリシー
- 7. powershellで昇格したコマンドプロンプトを実行するには
- 8. 昇格された特権でカスタム実行ファイルを実行するには?
- 9. 昇格して実行する.NETアプリを設定する
- 10. Railsコンソールからルビースクリプトを実行
- 11. 最初に実行/昇格されるデリゲートとイベント?
- 12. 昇格または昇格しない - それはクエストです
- 13. UACが昇格しました。昇格していないコードを実行しました
- 14. 昇格を促さずに管理者としてアプリケーションを実行する
- 15. 昇格された権限を持つASP.Netからスクリプト(.bat)を実行する
- 16. DefaultAppPoolはIISで特権昇格特権で実行されますか?
- 17. C#現在実行中のプロセスをSYSTEMとして昇格する
- 18. 昇格した他のユーザーシェルを実行するためのPowerShellデスクトップアイコン
- 19. 型昇格/変換
- 20. 実行上昇過程
- 21. LinqPad v5をx86モードで実行する
- 22. PiPモードでAndroidアプリを実行する
- 23. fipsモードでcqlshを実行する
- 24. "Validation"モードでAntを実行
- 25. JSONパーサーとIPアドレスを昇格する
- 26. 権限昇格 - エラー「template.cを」
- 27. Windowsで昇格した権限でスクリプトを実行するにはどうすればよいですか?
- 28. 実行モード
- 29. 私はwin xpの下で実行時に自分のプロセスを昇格することができます
- 30. 子供リストをlodashで親に昇格
管理者権限で端末(cmd.exe)を開き、そこからrubyを実行しますか? – Casper
はい、それは何かを上げる方法ではありませんか?スクリプトのルビーが自分自身を昇格させる方法が必要です。明らかに、ウィンドウズは管理者パスワードを要求するでしょう、それは私にとっては大丈夫です。 –