আমি কীভাবে আমার ব্যাচের ফাইলটি স্বয়ংক্রিয়ভাবে উন্নত করতে পারি, এটি যদি প্রয়োজন হয় তবে ইউএসি প্রশাসকের অধিকারের জন্য অনুরোধ করে?


209

আমি চাই আমার ব্যাচের ফাইলটি কেবল এলিভেটেড চালানো হোক। যদি উন্নত না হয় তবে ব্যবহারকারীর পক্ষে ব্যাচটিকে উন্নত হিসাবে পুনরায় চালু করতে একটি বিকল্প সরবরাহ করুন।

আমি সিস্টেমের ভেরিয়েবল সেট করতে, একটি ফাইল ফাইলের স্থানে দুটি ফাইল অনুলিপি করতে এবং ড্রাইভার ইনস্টলার শুরু করতে একটি ব্যাচ ফাইল লিখছি । যদি কোনও উইন্ডোজ / / উইন্ডোজ ভিস্তা ব্যবহারকারী ( ইউএসি সক্ষম এবং তারা স্থানীয় প্রশাসক হয়েও থাকে) ডান-ক্লিক না করে এবং "অ্যাডমিনিস্ট্রেটর হিসাবে চালান" নির্বাচন না করে এটি চালায় তবে তারা দুটি ফাইল অনুলিপি করে এবং সিস্টেম ভেরিয়েবলটি লিখে 'অ্যাক্সেস অস্বীকৃত' পাবে ।

ব্যাচটি স্বয়ংক্রিয়ভাবে উন্নত হিসাবে পুনরায় চালু করতে আমি কোনও আদেশ ব্যবহার করতে চাই যদি ব্যবহারকারী প্রকৃতপক্ষে প্রশাসক হন। অন্যথায়, যদি তারা প্রশাসক না হয় তবে আমি তাদের বলতে চাই যে তাদের ব্যাচের ফাইলটি চালানোর জন্য প্রশাসকের সুযোগ সুবিধার দরকার রয়েছে। আমি ফাইলগুলি অনুলিপি করতে xcopy এবং সিস্টেম ভেরিয়েবল লিখতে আরইজি এডিডি ব্যবহার করছি। আমি সম্ভাব্য উইন্ডোজ এক্সপি মেশিনগুলির সাথে ডিল করার জন্য এই আদেশগুলি ব্যবহার করছি আমি এই বিষয়টিতে একই রকম প্রশ্ন পেয়েছি, তবে কোনও ব্যাচ ফাইলকে উন্নত হিসাবে পুনরায় চালু করার বিষয়ে কিছুই নয়।


2
আমি কি পোস্ট করেছি তা দেখুন - আপনার কোনও বাহ্যিক সরঞ্জামের দরকার নেই, স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে অ্যাডমিনের অধিকারগুলির জন্য যাচাই করে এবং প্রয়োজনে স্বয়ংক্রিয়ভাবে উন্নত হয়।
ম্যাট

1
দয়া করে বিবেচনা করুন ম্যাট এর উত্তর টিকযুক্ত একটি হবে? আমার কাছে তাই মনে হচ্ছে।
akauppi


আমি পোস্ট করা ব্যাচ স্ক্রিপ্টের মন্তব্য বিভাগে নতুন উইন্ডোজ 10 টি ইঙ্গিত বিবেচনা করুন ।
ম্যাট

4
থেকে cmd: @powershell Start-Process cmd -Verb runas। পাওয়ারশেল থেকে কেবল ড্রপ করুন @powershell। এটি উচ্চতর অধিকারের সাথে সেন্টিমিডি শুরু হয়।
BrunoLM

উত্তর:


20

এলিভেটেড চালানোর জন্য psexec এর -hবিকল্পের সাথে আপনি স্ক্রিপ্টটি কল করতে পারেন ।

আমি নিশ্চিত নই যে এটি ইতিমধ্যে উন্নত হিসাবে চলছে কিনা আপনি কীভাবে সনাক্ত করবেন ... সম্ভবত কোনও অ্যাক্সেস অস্বীকৃত ত্রুটি থাকলে কেবল এলিভেটেড পারম দিয়ে পুনরায় চেষ্টা করুন?

অথবা, আপনার কাছে কমান্ডগুলি সহজভাবেই থাকতে পারে xcopyএবং reg.exeসর্বদা এটি চালানো psexec -hযেতে পারে তবে শেষ-ব্যবহারকারীর জন্য প্রতিটি সময় তাদের পাসওয়ার্ড ইনপুট করার প্রয়োজন হলে (বা স্ক্রিপ্টে পাসওয়ার্ডটি অন্তর্ভুক্ত করাতে যদি আপনি নিরাপত্তাহীন হন) তবে এটি বিরক্তিকর হবে ...


10
উত্তরের জন্য ধন্যবাদ. দুর্ভাগ্যক্রমে, আমি মনে করি না যে আমি স্টক উইন্ডোজ ভিস্তা / 7 সরঞ্জামের বাইরের কিছু ব্যবহার করতে পারি কারণ এটি আমার অফিসের বাইরের গ্রাহকদের কাছে যাবে। আমি মনে করি না আমি আইনত পিএসইেক্সেক বিতরণ করতে পারি।
PDixon724

2
হ্যাঁ, আমার মনে হয় আপনি সঠিক যে - যদিও PSExec এখন একটি Microsoft টুল EULA নিষেধ বন্টন করে :( (যেহেতু তারা Sysinternals বলছি কেনা!)
ewall

2
আমি মনে করি আমার বিকল্পগুলি বেশ সীমিত। আমি যদি ভিবিতে কীভাবে কোডিং করতে জানতাম তবে আমি এডমিন ম্যানিফেস্টের মাধ্যমে এটিকে একটি এক্সী হিসাবে তৈরি করতে পারতাম, তবে কোথায় শুরু করব তাও আমি জানতাম না। আমার ধারণা আমি ব্যাচের শুরুতে ঠিক সতর্ক করে দিয়েছিলাম তারা যদি উইন্ডোজ ভিস্তা / 7 চালিয়ে থাকে তবে অ্যাডমিন হিসাবে চালানো হবে। সবাইকে ধন্যবাদ.
PDixon724

1
আরেকটি তৃতীয় পক্ষের সরঞ্জাম যা অবাধে পুনরায় বিতরণযোগ্য হতে পারে এবং সংহত করতে এবং শিখতে সহজ হয় অটোআইটি ; এই পৃষ্ঠাটি প্রদর্শিত হয় যে স্ক্রিপ্টটি কীভাবে উন্নত সুবিধাগুলির জন্য অনুরোধ করে।
ewall

4
psexec -hকাজ করে না: 'PSEXESVC পরিষেবা ইনস্টল করতে পারেনি: অ্যাক্সেস প্রত্যাখ্যান করা হয়েছে।' Psexec চালানোর জন্য আপনার কাছে প্রশাসকের অধিকার থাকতে হবে।
নিকোলাস

319

বাহ্যিক সরঞ্জাম ব্যবহার না করেই একটি সহজ উপায় আছে - এটি উইন্ডোজ 7, ​​8, 8.1 এবং 10 এর সাথে দারুণভাবে চলে এবং পিছনের দিক থেকে সামঞ্জস্যপূর্ণ (উইন্ডোজ এক্সপির কোনও ইউএসি নেই, সুতরাং উচ্চতার প্রয়োজন হয় না - এতে স্ক্রিপ্ট সবেমাত্র এগিয়ে যায়)।

এই কোডটি দেখুন (আমি উইন্ডোজে 7 তে "অ্যাক্সেস অস্বীকৃত" থ্রেড ব্যাচ ফাইলে পোস্ট করা নিরনওল্ফ দ্বারা কোডটি দ্বারা অনুপ্রাণিত হয়েছি , তবে আমি এটি উন্নত করেছি - আমার সংস্করণে কোনও ডিরেক্টরি তৈরি এবং সরানো হয়নি) প্রশাসকের সুবিধার্থে পরীক্ষা করুন):

::::::::::::::::::::::::::::::::::::::::::::
:: Elevate.cmd - Version 4
:: Automatically check & get admin rights
:: see "https://stackoverflow.com/a/12264592/1016343" for description
::::::::::::::::::::::::::::::::::::::::::::
 @echo off
 CLS
 ECHO.
 ECHO =============================
 ECHO Running Admin shell
 ECHO =============================

:init
 setlocal DisableDelayedExpansion
 set cmdInvoke=1
 set winSysFolder=System32
 set "batchPath=%~0"
 for %%k in (%0) do set batchName=%%~nk
 set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
 setlocal EnableDelayedExpansion

:checkPrivileges
  NET FILE 1>NUL 2>NUL
  if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
  if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
  ECHO.
  ECHO **************************************
  ECHO Invoking UAC for Privilege Escalation
  ECHO **************************************

  ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
  ECHO args = "ELEV " >> "%vbsGetPrivileges%"
  ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
  ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
  ECHO Next >> "%vbsGetPrivileges%"

  if '%cmdInvoke%'=='1' goto InvokeCmd 

  ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
  goto ExecElevation

:InvokeCmd
  ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%"
  ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%"

:ExecElevation
 "%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %*
 exit /B

:gotPrivileges
 setlocal & cd /d %~dp0
 if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

 ::::::::::::::::::::::::::::
 ::START
 ::::::::::::::::::::::::::::
 REM Run shell as admin (example) - put here code as you like
 ECHO %batchName% Arguments: P1=%1 P2=%2 P3=%3 P4=%4 P5=%5 P6=%6 P7=%7 P8=%8 P9=%9
 cmd /k

স্ক্রিপ্টটি NET FILEপ্রশাসকের সুযোগ- সুবিধার প্রয়োজনের সুযোগটি নেয় এবং errorlevel 1যদি তা না থাকে তবে ফিরে আসে । উন্নতি স্ক্রিপ্ট তৈরি করে অর্জিত হয় যা সুযোগগুলি পাওয়ার জন্য ব্যাচ ফাইলটি পুনরায় চালু করে। এর ফলে উইন্ডোজ ইউএসি ডায়ালগ উপস্থাপন করে এবং আপনাকে প্রশাসকের অ্যাকাউন্ট এবং পাসওয়ার্ড জিজ্ঞাসা করে।

আমি এটি উইন্ডোজ 7, ​​8, 8.1, 10 এবং উইন্ডোজ এক্সপি দিয়ে পরীক্ষা করেছি - এটি সবার পক্ষে ঠিক কাজ করে। সুবিধাটি হ'ল, স্টার্ট পয়েন্টের পরে আপনি সিস্টেম অ্যাডমিনিস্ট্রেটরের বিশেষাধিকারের জন্য যে কোনও কিছু রাখতে পারেন, উদাহরণস্বরূপ, আপনি যদি ডিবাগিং উদ্দেশ্যে উইন্ডোজ পরিষেবাটি পুনরায় ইনস্টল এবং পুনরায় চালনা করতে চান তবে (ধরে নেওয়া হবে যে মাইপ্যাকেজ.এমসি একটি সার্ভিস ইনস্টলার প্যাকেজ) :

msiexec /passive /x mypackage.msi
msiexec /passive /i mypackage.msi
net start myservice

এই সুবিধাপ্রাপ্ত উচ্চ স্ক্রিপ্ট ব্যতীত, ইউএসি আপনাকে আপনার প্রশাসক ব্যবহারকারী এবং পাসওয়ার্ডের জন্য তিনবার জিজ্ঞাসা করবে - এখন আপনাকে প্রথম দিকে একবারেই জিজ্ঞাসা করা হয়েছিল, এবং কেবল প্রয়োজন হলেই।


যদি আপনার স্ক্রিপ্টটিতে কেবল একটি ত্রুটি বার্তা প্রদর্শন করা প্রয়োজন এবং যদি স্বয়ংক্রিয়ভাবে উত্তোলনের পরিবর্তে প্রশাসকের কোনও সুবিধা না থাকে তবে এটি আরও সহজ: আপনি আপনার স্ক্রিপ্টের শুরুতে নিম্নলিখিতগুলি যুক্ত করে এটি অর্জন করতে পারেন:

@ECHO OFF & CLS & ECHO.
NET FILE 1>NUL 2>NUL & IF ERRORLEVEL 1 (ECHO You must right-click and select &
  ECHO "RUN AS ADMINISTRATOR"  to run this batch. Exiting... & ECHO. &
  PAUSE & EXIT /D)
REM ... proceed here with admin rights ...

এইভাবে, ব্যবহারকারীকে রাইট-ক্লিক করতে হবে এবং "প্রশাসক হিসাবে চালান" নির্বাচন করতে হবে । স্ক্রিপ্টটি REMপ্রশাসকের অধিকারগুলি সনাক্ত করে যদি বিবৃতি দেওয়ার পরে এগিয়ে যায় তবে অন্যথায় কোনও ত্রুটি সহ প্রস্থান করুন। আপনার যদি প্রয়োজন হয় না PAUSE, কেবল এটি সরিয়ে দিন। গুরুত্বপূর্ণ: NET FILE [...] EXIT /D) অবশ্যই একই লাইনে থাকতে হবে। এটি আরও ভাল পাঠযোগ্যতার জন্য এখানে একাধিক লাইনে প্রদর্শিত হচ্ছে!


কিছু মেশিনে, আমি সমস্যার মুখোমুখি হয়েছি, যা উপরের নতুন সংস্করণে ইতিমধ্যে সমাধান হয়েছে। একটি হ'ল বিভিন্ন ডাবল উদ্ধৃতি হ্যান্ডলিংয়ের কারণে, এবং অন্য সমস্যাটি উইন্ডোজ 7 মেশিনে ইউএসি অক্ষম করা (সর্বনিম্ন স্তরে সেট করা হয়েছিল) এর কারণে হয়েছিল, সুতরাং স্ক্রিপ্টটি নিজেকে বারবার কল করে।

আমি এখনই উদ্ধৃতিটি পথে ফেলে দিয়ে এবং এগুলি পুনরায় যুক্ত করে ঠিক করেছি এবং আমি একটি অতিরিক্ত পরামিতি যুক্ত করেছি যা স্ক্রিপ্টটি যখন উন্নত অধিকারগুলির সাথে পুনরায় চালু হয় তখন যুক্ত করা হয়।

ডাবল উদ্ধৃতিগুলি নিম্নলিখিত দ্বারা সরানো হয়েছে (বিশদটি এখানে ):

setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion

তারপরে আপনি ব্যবহার করে পাথ অ্যাক্সেস করতে পারেন !batchPath!। এটিতে কোনও দ্বিগুণ উদ্ধৃতি নেই, তাই "!batchPath!"স্ক্রিপ্টে পরে বলা নিরাপদ ।

লাইন

if '%1'=='ELEV' (shift & goto gotPrivileges)

অধিকারগুলি উন্নত করার জন্য ভিবিএস স্ক্রিপ্ট দ্বারা স্ক্রিপ্টটিকে ইতিমধ্যে ডেকে আনা হয়েছে কি না তা পরীক্ষা করে না , অতএব অন্তহীন পুনরাবৃত্তিগুলি এড়িয়ে চলে। এটি ব্যবহার করে প্যারামিটারটি সরিয়ে দেয় shift


হালনাগাদ:

  • রেজিস্টার থাকার এড়াতে .vbsইন এক্সটেনশান উইন্ডোজ 10 , আমি লাইন প্রতিস্থাপন আছে
    "%temp%\OEgetPrivileges.vbs"
    দ্বারা
    "%SystemRoot%\System32\WScript.exe" "%temp%\OEgetPrivileges.vbs"
    উপরে লিপিতে; cd /d %~dp0স্টিফেনের পরামর্শ অনুসারে (পৃথক উত্তর) এবং স্ক্রিপ্ট ডিরেক্টরিটি ডিফল্ট হিসাবে সেট করতে টম জাটো (মন্তব্য) দ্বারা পরামর্শ অনুসারে যুক্ত করা হয়েছে।

  • এখন স্ক্রিপ্টটি সম্মান কমান্ড লাইন প্যারামিটার এটি দেওয়া হচ্ছে। জ্যাক্সমলেট, ট্যানিসডিএলজে এবং পিটার মর্টেনসেনকে পর্যবেক্ষণ এবং অনুপ্রেরণার জন্য ধন্যবাদ।

  • Artjom বি এর ইঙ্গিতটি মতে, আমি এটা বিশ্লেষণ এবং প্রতিস্থাপিত আছে SHIFTদ্বারা SHIFT /1, যার জন্য ফাইলের নাম অপরিবর্তিত, %0পরামিতি

  • যোগ করা হয়েছে del "%temp%\OEgetPrivileges_%batchName%.vbs"থেকে :gotPrivilegesঅধ্যায় পরিষ্কার করতে (যেমন MLT প্রস্তাব)। %batchName%আপনি যদি সমান্তরালে বিভিন্ন ব্যাচ চালান তবে প্রভাব এড়ানোর জন্য যুক্ত করা হয়েছে। নোট করুন যে আপনাকে forউন্নত স্ট্রিং ফাংশনগুলির সুবিধা নিতে সক্ষম হতে ব্যবহার করতে হবে, যেমন %%~nkকেবল ফাইলের নাম বের করে।

  • অপ্টিমাইজড স্ক্রিপ্ট কাঠামো, উন্নতি (অ্যাড ভেরিয়েবল vbsGetPrivilegesযা এখন সর্বত্র রেফারেন্স হিসাবে ফাইলের নাম বা নাম সহজেই পরিবর্তন করতে দেয়, কেবল .vbsযদি ব্যাচকে উন্নত করার প্রয়োজন হয় তবে ফাইল মুছুন )

  • কিছু ক্ষেত্রে, উন্নয়নের জন্য একটি পৃথক কলিং বাক্য গঠন প্রয়োজন। স্ক্রিপ্টটি যদি কাজ না করে তবে নীচের প্যারামিটারগুলি পরীক্ষা করুন:
    set cmdInvoke=0
    set winSysFolder=System32
    হয় 1 ম পরামিতিটি পরিবর্তন করুন set cmdInvoke=1এবং এটি ইতিমধ্যে সমস্যার সমাধান করেছে কিনা তা পরীক্ষা করুন। এটি cmd.exeস্ক্রিপ্টটিতে উন্নতি সম্পাদন করবে।
    অথবা 2 য় প্যারামিটারে পরিবর্তন করার চেষ্টা করুন winSysFolder=Sysnative, এটি 64 বিট সিস্টেমে সহায়তা করতে পারে (তবে বেশিরভাগ ক্ষেত্রে প্রয়োজন হয় না)। (এডিবাইলি এটি জানিয়েছে) "সিসনেটিভ" কেবলমাত্র 32-বিট স্ক্রিপ্ট হোস্টের (যেমন একটি ভিজ্যুয়াল স্টুডিও বিল্ড প্রক্রিয়া, বা অন্য 32-বিট অ্যাপ্লিকেশন থেকে স্ক্রিপ্ট আহবান) )৪-বিট অ্যাপ্লিকেশন চালু করার জন্য প্রয়োজনীয়।

  • প্যারামিটারগুলি কীভাবে ব্যাখ্যা করা হয় তা আরও স্পষ্ট করতে, আমি এখন এটির মতো প্রদর্শন করছি P1=value1 P2=value2 ... P9=value9। এটি বিশেষত কার্যকর যদি আপনার ডাবল উদ্ধৃতিতে যেমন পাথরের মতো পরামিতিগুলি আবদ্ধ করতে হয় তবে "C:\Program Files"

  • আপনি যদি ভিবিএস স্ক্রিপ্টটি ডিবাগ করতে চান তবে আপনি এটি যুক্ত করতে পারেন //X আপনি WScript.exe প্যারামিটারটিকে প্রথম প্যারামিটার হিসাবে , এখানে প্রস্তাবিত (এটি CScript.exe এর জন্য বর্ণিত, তবে WScript.exe এর জন্যও কাজ করে)।

উপকারী সংজুক:


9
দুর্দান্ত উত্তর, যদিও এটি আমাকে সামান্য বিস্মিত করে যে কিছু ক্ষেত্রে পরিষ্কারভাবে প্রয়োজনীয় এমন কিছু করার জন্য আপনাকে সমস্ত কিছু করতে হবে।
jcoder

50
আসলে, এলিভেটের মতো একটি কমান্ড উইন্ডোজ ব্যাচের ভাষায় স্পষ্টভাবে অনুপস্থিত।
ম্যাট

2
পাওয়ারশেলের সাথে সম্ভবত এটি আরও সহজ যেটিকে আরও জটিল বিষয়গুলির জন্য অনুমোদিত স্ক্রিপ্টিং ল্যাঙ্গাগুজ বলে মনে হয়, তবে আমি এখনও এটিকে শিখতে খুব বেশি মাথা
ঘামাইনি

1
পাওয়ারশেলের সিনট্যাক্স সম্পূর্ণ আলাদা (ক্রিয়াপদ-বিশেষ্য সিনট্যাক্স), তবে এটি আপনাকে সহজেই নেট নেট এসেম্বলিকে কল করতে দেয়। তবে এটি পরিচালনা করা (স্ক্রিপ্টগুলিতে স্বাক্ষর করা ইত্যাদি) কিছুটা বেশি কঠিন।
ম্যাট

2
@ ম্যাট আপনার উত্তরটিতে প্রত্যাখ্যানিত সম্পাদনার পিছনে কিছু সত্য আছে কিনা তা আপনি পরীক্ষা করতে পারেন ?
আর্টজম বি।

41

জ্যাকোডার এবং ম্যাট যেমন উল্লেখ করেছেন, পাওয়ারশেল এটিকে সহজ করে তুলেছে এবং এটি কোনও নতুন স্ক্রিপ্ট তৈরি না করে ব্যাচ স্ক্রিপ্টে এম্বেড করা যেতে পারে।

আমি ম্যাট এর স্ক্রিপ্ট পরিবর্তন করেছি:

:: Check privileges 
net file 1>NUL 2>NUL
if not '%errorlevel%' == '0' (
    powershell Start-Process -FilePath "%0" -ArgumentList "%cd%" -verb runas >NUL 2>&1
    exit /b
)

:: Change directory with passed argument. Processes started with
:: "runas" start with forced C:\Windows\System32 workdir
cd /d %1

:: Actual work

3
আপনি ঠিক বলেছেন, পাওয়ারশেল ইনস্টল করা থাকলে আপনি এটি ব্যাচ ফাইলটি এলিভেশন সহ চালাতে ব্যবহার করতে পারেন (কোড স্নিপেটের জন্য আপনাকে ধন্যবাদ!) এবং হ্যাঁ, লেবেলের প্রয়োজন নেই। ইঙ্গিতগুলির জন্য আপনাকে ধন্যবাদ, এটি একটি +1 ... :-) মূল্যবান
ম্যাট

2
যখন সেন্টিমিটার পাওয়ারশেল.এক্সে থেকে আহ্বান করা হয় তখন -verb রানাস বিকল্প থাকে না। আপনি ইতিমধ্যে পাওয়ারশেলে থাকলে এটি বিদ্যমান।
আদিল হিন্দিস্তান

1
আমি এই সমাধানটি সত্যিই পছন্দ করি, আমার জন্য দুর্দান্ত কাজ করে। উইন্ডোজ 8.1 এ আমার এটির কাজ করার জন্য: গেটপ্রাইভেলিজ লেবেলটির প্রয়োজন ছিল।
শাওনো

এই ব্যাচের ফাইলটি ইউএনসির পথে দূরবর্তী থাকলে আমি একটি সমস্যা মারছি।
রায়ান বিসলে

আমি শুরুতে পরিবর্তন ডিরেক্টরি যুক্ত করেছি, প্রবাহকে সহজ করেছিলাম এবং কিছুটা পরিষ্কার করেছি। প্রক্রিয়াগুলিতে সুরক্ষার কারণে WorkingDirectoryপ্যারামিটারের মাধ্যমে কাজের দির পরিবর্তন করা যায় নাStart-Processrunas
ceztko

28

আমি ম্যাট-এর দুর্দান্ত উত্তরটি ব্যবহার করছি, তবে এলিভেটেড স্ক্রিপ্টগুলি চালানোর সময় আমি আমার উইন্ডোজ 7 এবং উইন্ডোজ 8 সিস্টেমের মধ্যে পার্থক্য দেখছি।

একবার স্ক্রিপ্টটি উইন্ডোজ 8 এ উন্নীত হয়ে গেলে, বর্তমান ডিরেক্টরিটি সেট করা আছে C:\Windows\system32। সৌভাগ্যক্রমে, বর্তমান ডিরেক্টরিটি বর্তমান স্ক্রিপ্টের পথে পরিবর্তন করে একটি সহজ উপায় রয়েছে:

cd /d %~dp0

দ্রষ্টব্য: cd /dড্রাইভের চিঠিটিও পরিবর্তিত হয়েছে তা নিশ্চিত করার জন্য ব্যবহার করুন ।

এটি পরীক্ষা করতে, আপনি নিম্নলিখিতটি কোনও স্ক্রিপ্টে অনুলিপি করতে পারেন। একই ফলাফল দেখতে উভয় সংস্করণে সাধারণত চালান। অ্যাডমিন হিসাবে চালান এবং উইন্ডোজ 8 এর পার্থক্যটি দেখুন:

@echo off
echo Current path is %cd%
echo Changing directory to the path of the current script
cd %~dp0
echo Current path is %cd%
pause

1
ভাল ইঙ্গিত, স্টিফেন। সুতরাং স্ক্রিপ্টটির cd %~dp0বর্তমান পথ ধরে রাখতে শেষ করা উচিত (আমি ধরে নিলাম এটি উইন 7 এও কাজ করে, তাই একই কমান্ডটি শুধুমাত্র উইন 8 + এর জন্য প্রয়োজন হলেও ব্যবহার করা যেতে পারে)। এই জন্য +1!
ম্যাট

2
উল্লেখ্য, উইন্ডোজ 7 চালিত হওয়া আমার সিস্টেমে
এটিরও

1
বা pushd %~dp0পরিবর্তে ব্যবহার করুন ... কেন? কারণpopd
জারোস্লাভ জারুবা

27

আমি এটি এইভাবে করি:

NET SESSION
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO ADMINTASKS

:ELEVATE
CD /d %~dp0
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%~nx0', '', '', 'runas', 1);close();"
EXIT

:ADMINTASKS
(Do whatever you need to do here)
EXIT

এই উপায়টি সহজ এবং কেবল উইন্ডোজ ডিফল্ট কমান্ড ব্যবহার করুন। আপনার ব্যাচ ফাইলটি পুনরায় বিতরণের দরকার হলে এটি দুর্দান্ত।

CD /d %~dp0বর্তমান ডিরেক্টরিটি ফাইলের বর্তমান ডিরেক্টরিতে সেট করে (যদি এটি ইতিমধ্যে না থাকে তবে ফাইলটি যে ড্রাইভেই থাকুক না কেন, /dবিকল্পটির জন্য ধন্যবাদ )।

%~nx0 এক্সটেনশন সহ বর্তমান ফাইলের নামটি ফেরত দেয় (যদি আপনি এই এক্সটেনশানটি অন্তর্ভুক্ত না করেন এবং ফোল্ডারে একই নামের সাথে কোনও এক্সিকি আছে তবে এটি এক্সকে কল করবে)।

এই পোস্টে অনেক জবাব আছে আমি জানি না আমার উত্তরটি দেখা হবে কিনা।

যাইহোক, আমি অন্যান্য উত্তরের প্রস্তাবিত অন্যান্য সমাধানগুলির চেয়ে সহজভাবে এই পথটি পেয়েছি, আমি আশা করি এটি কাউকে সহায়তা করবে।


4
সিডি% ~ dp0 নেটওয়ার্ক ড্রাইভে কাজ করবে না, তার পরিবর্তে পুশড% ~ dp0 ব্যবহার করবে।
স্ট্যাভম

1
আমি এই উত্তরের সরলতা পছন্দ করি। এবং অবশেষে Jscript ব্যবহার করার একটি কারণ!
জো কোডার

1
ম্যাজিক! আপনাকে অনেক ধন্যবাদ.
ড্যানিয়েল অরল্যান্ডো

1
@ ওল্ফ আমি আপনাকে একটি ভুল উত্তর বুঝতে পেরেছি বলে একটি বিশাল উত্তর টাইপ করেছি ... আপনি এখন যা বলতে চাইছেন তা পেয়েছি। আমি এটি সম্পাদনা করব /d। আপনাকে ধন্যবাদ :) (পিএস: পিয়ানোবাদী এখানেও!)
ম্যাথিউস রোকা

1
এটি দুর্দান্ত কাজ করে তবে cdকমান্ডটি শুরুতে সরিয়ে নেওয়া ভাল ধারণা হতে পারে (এটি নিশ্চিত করে যে পথটি উন্নত স্ক্রিপ্টের জন্যও উপলব্ধ - অন্যথায় উন্নত স্ক্রিপ্টটি কেবল সিস্টেম 32 থেকে চালিত হয়)। আপনার আউটপুটটি আড়াল করতে নেট কমান্ডটি পুনঃনির্দেশ করা উচিত:net session >nul 2>&1
নুলানো

23

ম্যাট এর দুর্দান্ত উত্তর রয়েছে তবে এটি স্ক্রিপ্টে যে কোনও যুক্তি সরিয়ে দেয়। এখানে আমার পরিবর্তনটি যা আর্গুমেন্ট রাখে। আমি উইন্ডোজ 8-এ ওয়ার্কিং ডিরেক্টরি সমস্যার জন্য স্টিফেনের সংশোধনও অন্তর্ভুক্ত করেছি।

@ECHO OFF
setlocal EnableDelayedExpansion

NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto START ) else ( goto getPrivileges ) 

:getPrivileges
if '%1'=='ELEV' ( goto START )

set "batchPath=%~f0"
set "batchArgs=ELEV"

::Add quotes to the batch path, if needed
set "script=%0"
set script=%script:"=%
IF '%0'=='!script!' ( GOTO PathQuotesDone )
    set "batchPath=""%batchPath%"""
:PathQuotesDone

::Add quotes to the arguments, if needed.
:ArgLoop
IF '%1'=='' ( GOTO EndArgLoop ) else ( GOTO AddArg )
    :AddArg
    set "arg=%1"
    set arg=%arg:"=%
    IF '%1'=='!arg!' ( GOTO NoQuotes )
        set "batchArgs=%batchArgs% "%1""
        GOTO QuotesDone
        :NoQuotes
        set "batchArgs=%batchArgs% %1"
    :QuotesDone
    shift
    GOTO ArgLoop
:EndArgLoop

::Create and run the vb script to elevate the batch file
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
ECHO UAC.ShellExecute "cmd", "/c ""!batchPath! !batchArgs!""", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
"%temp%\OEgetPrivileges.vbs" 
exit /B

:START
::Remove the elevation tag and set the correct working directory
IF '%1'=='ELEV' ( shift /1 )
cd /d %~dp0

::Do your adminy thing here...

1
এটি একটি দরকারী উত্তর। তবে ECHO UAC.ShellExecute....লাইনে, "batchArgs!"পরিবর্তনশীল প্রসারিত হবে না। ব্যবহার "!batchArgs!"। আমার সম্পাদনা প্রত্যাখ্যান করা হয়েছিল, তাই আমি মন্তব্য করেছি।
পেঁয়াজ আগুন

1
@ ফ্লেডোনিয়ন ভাল দাগ! আমি নিশ্চিত না যে আপনার সম্পাদনাটি কেন প্রত্যাখ্যান করা হয়েছিল কারণ এটি অবশ্যই টাইপোর ছিল এবং আপনার ফিক্স কাজ করে। নিজেই পরিবর্তন আনুন এবং এটি উইন ৮.১-এ পরীক্ষা করেছেন। এখন এই স্ক্রিপ্টগুলি যেখানে আমি এই কোডটি ব্যবহার করি তা সন্ধান করতে ....
jxmallett

2
স্ক্রিপ্টটি উদ্ধৃত আর্গুমেন্ট, যেমন test.bat "a thing"বা ব্যবহার করার সময় ভেঙে যায় "test script.bat" arg1 arg2। সব ঠিক আছে এখন।
jxmallett

আমি এটি ভাঙ্গতে সক্ষম হয়েছি (আমার ত্রুটির কারণে: ম্যাপযুক্ত নেটওয়ার্ক ড্রাইভ থেকে স্ক্রিপ্ট চালানো, যেহেতু অ্যাডমিন এবং সাধারণ ব্যবহারকারীর একই ম্যাপিং নেই)। তবুও: আউটপুট দেখার কোনও উপায় আছে কি? আমার জন্য, আমাকে .vbs সন্ধান করতে হবে এবং / সিটিকে একটি / কে পরিবর্তন করতে হবে এবং তারপরে এটি ম্যানুয়ালি দেখতে পেল।
আন্ড্রেয়াস রিফ 13

21

স্ক্রিপ্টটি যদি এটি না হয় তবে পুনরায় আরম্ভ করতে আমি পাওয়ারশেল ব্যবহার করি। এই স্ক্রিপ্টগুলি আপনার স্ক্রিপ্টের একেবারে শীর্ষে রাখুন।

net file 1>nul 2>nul && goto :run || powershell -ex unrestricted -Command "Start-Process -Verb RunAs -FilePath '%comspec%' -ArgumentList '/c %~fnx0 %*'"
goto :eof
:run
:: TODO: Put code here that needs elevation

আমি @ ম্যাট এর উত্তর থেকে 'নেট নাম' পদ্ধতিটি অনুলিপি করেছি। তার উত্তরটি আরও ভাল নথিভুক্ত এবং এতে ত্রুটির বার্তা এবং মত রয়েছে। এইটির একটি সুবিধা রয়েছে যে পাওয়ারশেল ইতিমধ্যে ইনস্টলড এবং উইন্ডোজ 7 এবং তারপরেও উপলব্ধ। কোনও অস্থায়ী ভিবিএস স্ক্রিপ্ট (* .vbs) ফাইল নেই এবং আপনাকে সরঞ্জাম ডাউনলোড করতে হবে না।

এই পাওয়ারটি কোনওরকম কনফিগারেশন বা সেটআপ ছাড়াই কাজ করা উচিত, যতক্ষণ না আপনার পাওয়ার শেল কার্যকর করার অনুমতিগুলি লকড না হয়ে থাকে।


এটিকে এক হিসাবে বিবেচনা করার জন্য কোয়েস্ট দ্বারা বেষ্টিত একটি তালিকা শ্বেত স্পেস বিচ্ছিন্ন যুক্তি সরবরাহ করার সময়, /c %~fnx0 %*'অংশটি প্রথমটি ছাড়াও প্রতিটি অংশ ছেড়ে যায় বলে মনে হয়। উদাহরণস্বরূপ test.bat "arg1 arg2 arg3"কেবল আরগ 1 থেকে এগিয়ে দেওয়া হয়
নিকোলাস

দেখে মনে হচ্ছে যে যাই হোক না কেন, শুরু-প্রক্রিয়াটি যুক্তি তালিকার সমস্ত ডাবল উদ্ধৃতি সরিয়ে দেয় ..
নিকোলাস মোম্মার্টস

আমার জন্য কাজ কর! আমি এটা ব্যবহার করছি netsh int set int %wifiname% Enable/Disable
মার্সলো

2
আমার উপরের নিকোলাস মোম্মার্টস একই সমস্যা ছিল। এটি কেন কাজ করে তা আমি বুঝতে পারি না (সর্বোত্তম ধরণের সংশোধন করা), তবে নিম্নলিখিতগুলির মতো এটির মতো কাজ করা উচিত (শেষে সমস্ত অতিরিক্ত উদ্ধৃতি চিহ্নগুলি নোট করুন): net file 1>nul 2>nul && goto :run || powershell -ex unrestricted -Command "Start-Process -Verb RunAs -FilePath '%comspec%' -ArgumentList '/c ""%~fnx0""""'"
ভূমিকম্পগুলি

আরেকটি সমস্যা (অসুবিধা) হ'ল সার্ভার পরিষেবাটি চলমান না থাকলে স্ক্রিপ্টটি (ব্যবহারকারী ইনপুটটির জন্য অপেক্ষা করে) থামিয়ে দেয় ( কারণগুলির কারণে আমি এটি অক্ষম করেছি)। আমি প্রথমত HOSTS ফাইলের অবস্থানটিতে লেখার চেষ্টা করে অ্যাডমিন পার্সমের পরীক্ষা করি , তবে সক্ষম উইন্ডো পরিষেবাগুলি বা ফাইলের লেখার উপর নির্ভর না করে পাওয়ারশেল কমান্ড- ভার্বান রুনাসমূহের কাছে প্রার্থনা করা ভাল ।
স্ক্রিপ্ট'ন'কোড

15

কিছু প্রোগ্রামের জন্য সুপার সিক্রেট __COMPAT_LAYERএনভায়রনমেন্ট ভেরিয়েবল সেট RunAsInvoker করতে কাজ করবে C এটি দেখুন:

set "__COMPAT_LAYER=RunAsInvoker"
start regedit.exe

যদিও এর মতো কোনও ইউএসি প্রম্পট করা হবে না প্রশাসকের অনুমতি ব্যতীত ব্যবহারকারী অবিরত থাকবে।


1
মাইক্রোসফ্ট সাইটের লিঙ্কটি আর কাজ করে না, তাই আমি এটি সংরক্ষণাগার ..org এর সামগ্রীতে পরিবর্তন করেছি। যদি কেউ মাইক্রোসফ্টের সাইটের সামগ্রীতে একটি কার্যকারী লিঙ্ক খুঁজে পেতে পারে তবে সমস্ত উপায়ে দয়া করে এটি এতে আপডেট করুন।
রক পেপারলিজার্ড

1
এটি এখনও মাঝারি অখণ্ডতায় উন্নীত নয় , যাতে আপনি এইচকেএলএমকে সম্পাদনা করতে পারবেন না regedit। এটি সবেমাত্র ইউএকে এড়িয়ে গেছে।
হ্যাকিংএডিক্টিক্ট 1337

5

আমি স্ক্রিপ্টের শুরুতে এটি আটকালাম:

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\icacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo args = "" >> "%temp%\getadmin.vbs"
    echo For Each strArg in WScript.Arguments >> "%temp%\getadmin.vbs"
    echo args = args ^& strArg ^& " "  >> "%temp%\getadmin.vbs"
    echo Next >> "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", args, "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs" %*
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

2
আমি আপনার স্ক্রিপ্টে আরগ প্রসেসিং পছন্দ করি। তবে নোট করুন যে caclsউইন্ডোজ 7 এবং আরও নতুন উইন্ডোজ সংস্করণগুলিতে অবমূল্যায়িত হয়েছে।
ম্যাট


1
আপনি কি জানেন যে লাইনটি pushd "%CD%"বর্তমান চলমান ডিরেক্টরিটি সংরক্ষণ করে এবং বর্তমান ওয়ার্কিং ডিরেক্টরিতে পরিবর্তন করে?
উলফ

3

আমি লিখেছিলাম gsudo, উইন্ডোজের জন্য একটিsudo : এটি বর্তমান কনসোলে উন্নীত করে (কোনও নতুন উইন্ডোতে সরে যাওয়ার কোনও প্রসঙ্গ নেই), শংসাপত্রের ক্যাশে (হ্রাসযুক্ত ইউএসি পপআপগুলি) সহ এবং পাওয়ারশেলের কমান্ডগুলিও উন্নত করে

এটি চাইলে কমান্ডগুলিকে উন্নত করতে দেয় যা অ্যাডমিন সুবিধাগুলি বা পুরো ব্যাচের প্রয়োজন হয়। gsudo এলিভেটেড চালানোর জন্য যে কোনও কিছুর আগে কেবল পূর্ববর্তন করুন ।

উদাহরণস্বরূপ ব্যাচ ফাইল যা গুডু ব্যবহার করে নিজেকে উন্নত করে:

সম্পাদনা: নতুন একটি লাইনার সংস্করণ যা কোনও উইন্ডোজ ভাষার সাথে কাজ করে এবং হোয়ামি সম্পর্কিত সমস্যাগুলি এড়িয়ে চলে :

net session >nul 2>nul & net session >nul 2>nul || gsudo "%~f0" && exit /b || exit /b
:: This will run as admin ::

বিকল্প (মূল সংস্করণ):

@echo off
  rem Test if current context is already elevated:
  whoami /groups | findstr /b BUILTIN\Administrators | findstr /c:"Enabled group" 1> nul 2>nul && goto :isadministrator
  echo You are not admin. (yet)
  :: Use gsudo to launch this batch file elevated.
  gsudo "%~f0"
  goto end
:isadministrator
  echo You are admin.
  echo (Do admin stuff now).
:end

ইনস্টল করুন:

  • চকোলেটির মাধ্যমে: choco install gsudo
  • বা স্কুপ: scoop install gsudo
  • বা এটি গিথুব থেকে ধরে নিন: https://github.com/gerardog/gsudo

কার্যক্রমে gsudo দেখুন: gsudo ডেমো


কুল। ধন্যবাদ। উইন্ডোজের কোন সংস্করণে এটি কাজ করে?
রক পেপারলিজার্ড

পরীক্ষাগুলি স্যুটটি সার্ভারে 2019 চলছে এবং আমার স্থানীয় দেব বাক্সটি উইন্ডোজ 10 1909। দুঃখিত, আমি অন্যান্য পুরানো ওএসের সাথে সামঞ্জস্যতা পরীক্ষা করি নি।
জেরার্ডো গ্রিগনোলি

ধন্যবাদ জেরার্ডো যদি কেউ এটি উইন্ডোজের অন্যান্য সংস্করণে চেষ্টা করে তবে দয়া করে আপনার ফলাফল পোস্ট করুন।
রকপ্যাপারলিজার্ড

আমি উইন্ডোজ 8.1-এ স্রেফ গুডো ভি0.7 পরীক্ষা করেছি এবং কাজ করেছি। .Net Framework 4.6সেখানে ইনস্টল করা তুচ্ছ নয় । ভাগ্যক্রমে choco install dotnet4.6.2কিছু হার্ড-টু-পাওয়ার নির্ভরতা নিয়ে এসেছিল। তারপরে একটি ভুল প্রম্পট দেখিয়ে gsudo config Prompt "$p# "একটি সমস্যা স্থির করে ConHost(রেড শার্পের পরিবর্তে সিকোয়েন্স ক্রসগুলি চালানো)। @ রকপ্যাপারলিজার্ড
জেরার্ডো

অনেক ধন্যবাদ জেরার্ডো। এটি 4.6 এর আগে নেট ফ্রেমওয়ার্কের কোনও সংস্করণ নিয়ে কাজ করার জন্য পুনরায় সংমিশ্রণ করা যেতে পারে, বা এটি 4.6 এর সাথে সম্পর্কিত কোনও কার্যকারিতার উপর নির্ভর করে?
রক পেপারলিজার্ড

2

যদিও এই প্রশ্নের ক্ষেত্রে সরাসরি প্রযোজ্য নয়, কারণ এটি ব্যবহারকারীর জন্য কিছু তথ্য চায়, গুগল আমাকে এখানে এনেছিল যখন আমি আমার .bat ফাইলটি টাস্ক শিডিয়ুলার থেকে উন্নত করে চালাতে চাইতাম।

সবচেয়ে সহজ পদ্ধতির ছিল .bat ফাইলটিতে একটি শর্টকাট তৈরি করা, কারণ একটি শর্টকাটের জন্য আপনি Run as administratorসরাসরি উন্নত বৈশিষ্ট্যগুলি থেকে সেট করতে পারেন ।

টাস্ক শিডিয়ুলার থেকে শর্টকাট চালানো, .bat ফাইলটি চালিত করে।


0

পাওয়ারশেল ব্যবহার করা হচ্ছে।

যদি সেন্টিমিডি ফাইলটি দীর্ঘ হয় তবে আমি উন্নয়নের প্রয়োজনের জন্য প্রথমটি ব্যবহার করি এবং তারপরে প্রকৃত কাজটিকারীকে কল করি।

স্ক্রিপ্টটি যদি একটি সরল কমান্ড হয় তবে সবকিছু একটি সেমিডি ফাইলের সাথে ফিট হতে পারে। স্ক্রিপ্ট ফাইলগুলিতে পাথ অন্তর্ভুক্ত করতে ভুলবেন না।

টেমপ্লেট:

@echo off
powershell -Command "Start-Process 'cmd' -Verb RunAs -ArgumentList '/c " comands or another script.cmd go here "'"

উদাহরণ 1:

@echo off
powershell -Command "Start-Process 'cmd' -Verb RunAs -ArgumentList '/c "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\BIN\x.ps1"'"

উদাহরণ 2:

@echo off
powershell -Command "Start-Process 'cmd' -Verb RunAs -ArgumentList '/c "c:\bin\myScript.cmd"'"

0

এটা চেষ্টা কর:

@echo off
CLS
:init
setlocal DisableDelayedExpansion
set cmdInvoke=1
set winSysFolder=System32
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
if '%cmdInvoke%'=='1' goto InvokeCmd 
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
goto ExecElevation
:InvokeCmd
ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%"
:ExecElevation
"%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %*
exit /B
:gotPrivileges
setlocal & cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)
REM Run shell as admin (example) - put here code as you like
ECHO %batchName% Arguments: P1=%1 P2=%2 P3=%3 P4=%4 P5=%5 P6=%6 P7=%7 P8=%8 P9=%9
cmd /k

আপনার যদি সেই ব্যাচের ফাইলের তথ্য দরকার হয়, এইচটিএমএল / জেএস / সিএসএস স্নিপেট চালান:

document.getElementsByTagName("data")[0].innerHTML="ElevateBatch, version 4, release<br>Required Commands:<ul><li>CLS</li><li>SETLOCAL</li><li>SET</li><li>FOR</li><li>NET</li><li>IF</li><li>ECHO</li><li>GOTO</li><li>EXIT</li><li>DEL</li></ul>It auto-elevates the system and if the user presses No, it just doesn't do anything.<br>This CANNOT be used to create an Elevated Explorer.";
data{font-family:arial;text-decoration:none}
<data></data>


-3

নিম্নলিখিত সমাধানটি পরিষ্কার এবং পুরোপুরি কাজ করে।

  1. এলিভেট জিপ ফাইলটি https://www.winability.com/download/Elevate.zip থেকে ডাউনলোড করুন

  2. জিপের অভ্যন্তরে আপনার দুটি ফাইল খুঁজে পাওয়া উচিত: এলিভেট.এক্সি এবং এলিভেট 64.exe। (পরবর্তীটি একটি স্থানীয় -৪-বিট সংকলন, যদি আপনার এটির প্রয়োজন হয় তবে নিয়মিত 32-বিট সংস্করণ, এলিভেট.এক্সই, উইন্ডোজের 32- এবং 64-বিট সংস্করণ উভয়ই ভাল কাজ করতে পারে)

  3. Elevate.exe ফাইলটি এমন একটি ফোল্ডারে অনুলিপি করুন যেখানে উইন্ডোজ সর্বদা এটি খুঁজে পেতে পারে (যেমন সি: / উইন্ডোজ)। অথবা আপনি নিজের ব্যাট ফাইলটি রাখার পরিকল্পনা করছেন সেখানে আপনি সেই একই ফোল্ডারে অনুলিপি করতে পারবেন।

  4. ব্যাচ ফাইলে এটি ব্যবহার করতে, আপনি যে কমান্ডটি অ্যাডমিনিস্ট্রেটর হিসাবে এক্সিকিউটিভ করতে চান তা এই জাতীয় লিফট কমান্ডের সাথে পূর্বেই যুক্ত করুন:

 elevate net start service ...

2
এই কমান্ডটি কেবল একটি ডায়ালগ উইন্ডো খোলে যা ব্যবহারকারীকে জিজ্ঞাসা করে যদি এই কমান্ডটি কার্যকর করার অনুমতি দেওয়া হয়। সুতরাং আপনি এই কমান্ডটি ব্যাচফাইলে ব্যবহার করতে পারবেন না যা ব্যবহারকারীর ইন্টারঅ্যাকশন ছাড়া চালানো উচিত।
Radon8472

যদি ব্যবহারকারী ইন্টারঅ্যাকশন ছাড়াই এটি উন্নত করা সম্ভব হয় তবে এটি একটি বিশাল সুরক্ষা গর্ত হবে, তাই না? প্রতিটি ভাইরাস ব্যবহারকারীর অনুমোদন ছাড়াই নিজেকে উন্নত করতে সেই পদ্ধতিটি ব্যবহার শুরু করবে।
আন্দ্রেই বেলোগোর্টসফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.