मुझे विंडोज के तहत उन्नत मोड (एडमिन प्राइवेटिजेज) में रूबी स्क्रिप्ट चलाने की आवश्यकता है। क्या यह संभव है?उन्नत मोड में रूबी स्क्रिप्ट चलाएं
उत्तर
यहां यह कैसे करें। ShellExecute
का उपयोग करके उन्नत (व्यवस्थापक) विशेषाधिकारों के साथ अपने निष्पादन योग्य को पुन: प्रारंभ करना सबसे आसान तरीका है।
रूबी के साथ आप इसे इस तरह कार्य करें:
require 'win32ole'
shell = WIN32OLE.new('Shell.Application')
shell.ShellExecute('path_to_ruby_program', nil, nil, 'runas')
आप Windows यूएसी सक्षम है तो यह आप पॉप वाले संवाद व्यवस्थापक विशेषाधिकार का अनुरोध करता है अप परिचित विंडोज दे देंगे। एक बार जब आप हां पर क्लिक करेंगे तो आप प्रक्रिया व्यवस्थापक अधिकारों के साथ चलेंगे।
यहां गुप्त चाल अनियंत्रित 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
क्रेडिट उसके जवाब के लिए पीटर मैकइवोय को जाता है here
मैं इस संशोधित के लिए कैस्पर और thegreendroid धन्यवाद देना चाहते हैं उपाय।
मैं उनके उदाहरणों को चलाने के लिए नहीं मिला क्योंकि एक स्पर्श के साथ मैंने इसे एक साथ रखा है। मैंने execute_command
की खोज की थोड़ी सी खोज की, क्योंकि मेरी रूबी 1.9.3 की स्थापना को पता नहीं था कि इसके साथ क्या किया जाए, और मुझे कुछ भी नहीं मिला, इसलिए मैंने बैकटीक्स का इस्तेमाल किया। \
से बच निकलना पड़ा। 2>&1
बिट इतना रूबी वास्तव में रिक्त स्ट्रिंग के बजाय आउटपुट प्राप्त करता है, और यदि वह आउटपुट 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", पथ, "", 'runas') ' अधिक जानकारी यहां मिल सकती है: http://rubyonwindows.blogspot.com.es/ 2007/05/शुरू-क्षुधा और मुद्रण-डॉक्स-with.html –
अन्य लेखकों के लिए धन्यवाद, मैं (विंडोज़ पर परीक्षण किया 8) इस के साथ काम करने के लिए आए हैं
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()
या फिर आप हो सकता था एक launcher.cmd
cd full\path
ruby myscript.rb
और युक्त व्यवस्थापक अधिकार के साथ इस cmd फ़ाइल का शुभारंभ
हे nce आपने रूबी के साथ परीक्षण किया है, आप rubyw
- 1. पृष्ठभूमि में रूबी स्क्रिप्ट चलाएं
- 2. रेल पर रूबी: उन्नत खोज
- 3. बंडलर संदर्भ के भीतर रूबी स्क्रिप्ट कैसे चलाएं?
- 4. सर्वर मोड में H2 डेटाबेस कैसे चलाएं?
- 5. केवल लैंडस्केप मोड में एप्लिकेशन चलाएं?
- 6. रूबी - स्क्रिप्ट
- 7. PHP/MYSQL उन्नत खोज स्क्रिप्ट। कैसे?
- 8. एनएसआईएस स्क्रिप्ट में एक्सई फाइल कैसे चलाएं?
- 9. लिनक्स: एक स्क्रिप्ट में एक बाइनरी चलाएं
- 10. वेबपृष्ठ में पाइथन स्क्रिप्ट कैसे चलाएं
- 11. पृष्ठभूमि में एक पायथन स्क्रिप्ट कैसे चलाएं?
- 12. वर्तमान टर्मिनल से नए टर्मिनल में एक शेल स्क्रिप्ट चलाएं
- 13. अन्य टीसीएल स्क्रिप्ट में tcl स्क्रिप्ट कैसे चलाएं?
- 14. रेल पर रूबी उन्नत JSON Serialization
- 15. बैश से पहले स्क्रिप्ट चलाएं
- 16. स्थापित पायथन स्क्रिप्ट कैसे चलाएं?
- 17. अनलॉक पर एक स्क्रिप्ट चलाएं?
- 18. एंड्रॉइड पर रूबी कैसे चलाएं?
- 19. सी # से पावरशेल स्क्रिप्ट को गैर-उन्नत उपयोगकर्ता
- 20. उन्नत विशेषाधिकारों के साथ कस्टम निष्पादन योग्य कैसे चलाएं?
- 21. उत्पादन मोड में स्क्रिप्ट/सीएसएस को node.js
- 22. एसक्यूएल सर्वर स्क्रिप्ट अपग्रेड मोड में है
- 23. स्क्रिप्ट मोड विरासत चर में सीएमके फ़ाइल
- 24. Emacs रूबी-मोड इंडेंट निजी
- 25. sh या bash स्क्रिप्ट से विंडोज बैच स्क्रिप्ट को चलाएं/चलाएं
- 26. डिफ़ॉल्ट रूप से कंसोल मोड (-nw) में emacs चलाएं
- 27. एसएमएल फ़ाइल चलाएं लेकिन इंटरैक्टिव मोड में नहीं छोड़े
- 28. एक स्क्रिप्ट में व्यवस्थापक के रूप में cmd.exe चलाएं
- 29. जेनकींस में रूट के रूप में स्क्रिप्ट कैसे चलाएं?
- 30. PowerShell स्क्रिप्ट में व्यवस्थापक के रूप में कमांड चलाएं। यूएसी
व्यवस्थापक विशेषाधिकारों के साथ टर्मिनल (cmd.exe) खोलें और वहां से रूबी चलाएं? – Casper
हां, यह कुछ भी बढ़ाने का एक तरीका है ना? मुझे एक तरीका चाहिए कि मेरी स्क्रिप्ट रूबी खुद को ऊपर उठाए। स्पष्ट रूप से विंडोज़ व्यवस्थापक पासवर्ड मांगेगी, यह मेरे लिए ठीक है। –