Here's how to do it. The easiest way is to restart your executable with elevaded (Admin) privileges using ShellExecute
.
With Ruby you do it like this:
require 'win32ole'
shell = WIN32OLE.new('Shell.Application')
shell.ShellExecute('path_to_ruby_program', nil, nil, 'runas')
If you have Windows UAC enabled this will give you the familiar Windows pop up dialog that requests Admin privileges. Once you click Yes, your process will run with Admin rights.
The secret trick here is using the the undocumented ShellExecute
operation parameter runas
, which will elevate the requested operation.
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx
Also related discussion on how to manually create an elevated command prompt shortcut (which might be a good enough solution in some cases):
http://www.sevenforums.com/tutorials/3718-elevated-command-prompt-shortcut.html
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…