সিএমডি প্রশাসক হিসাবে চালিত হচ্ছে / কীভাবে উন্নতি সুবিধা পেয়েছে তা কীভাবে সনাক্ত করবেন?


106

ব্যাচ ফাইলের অভ্যন্তর থেকে, আমি পরীক্ষা করতে চাই যে আমি প্রশাসক / উন্নত সুবিধাগুলির সাথে চলছি কিনা।

"প্রশাসক হিসাবে চালান" নির্বাচন করা হলে ব্যবহারকারীর নাম পরিবর্তন হয় না, যাতে এটি কাজ করে না।

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

আমি কেবল উইন্ডোজ about এর বিষয়ে যত্নশীল, যদিও পূর্ববর্তী অপারেটিং সিস্টেমগুলির সমর্থনটি দুর্দান্ত।


একটি হ্যাক চেষ্টা করার চেষ্টা করা হবে echo > somefileএবং একটি ডিরেক্টরি যা অ্যাডমিন বেসরকারী প্রয়োজন হবে। এটি কোনও পার্শ্ব প্রতিক্রিয়া হিসাবে একটি ফাইল উত্পাদন করতে চাই, তবে আপনি সংঘর্ষের জন্য পরীক্ষা করতে পারেন এবং একটি অনন্য ফাইলের নামটি একটি কর্মফল হিসাবে তৈরি করতে পারেন।
মার্ক বি


4
[আপনি এখানে একটি স্ব-উন্নত ব্যাচটি পেতে পারেন] [1] [1]: স্ট্যাকওভারফ্লো.com
আমর আলী


4
@ এনপোকমাকা আপনি যে প্রশ্নটি যুক্ত করেছেন সেটি হ'ল এটির সদৃশ;) (2013 বনাম 2011)
ম্যাথিউ

উত্তর:


63

যোগ করুন : উইন্ডোজ 8 এর জন্য এটি কাজ করবে না; পরিবর্তে এই দুর্দান্ত উত্তর দেখুন ।


এখানে এই সমাধানটি খুঁজে পেয়েছেন: http://www.robvenderwoude.com/clevertricks.php

AT > NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO you are Administrator
) ELSE (
    ECHO you are NOT Administrator. Exiting...
    PING 127.0.0.1 > NUL 2>&1
    EXIT /B 1
)

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

$principal = new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())
$principal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)

যদি না হয় (এবং সম্ভবত নাও, যেহেতু আপনি স্পষ্টভাবে ব্যাচ ফাইলগুলি প্রস্তাব করেছিলেন) তবে আপনি উপরেরটি .NET লিখতে এবং আপনার ব্যাচ ফাইলটি ব্যবহারের ফলাফলের উপর ভিত্তি করে একটি এক্সি থেকে একটি প্রস্থান কোড ফেরত দিতে পারেন।


4
এটি কমান্ড নিখুঁত! আপনার গুগল-ফু আমার গুগল-ফু থেকে উচ্চতর। ;-)
জেফ

4
+1 @ রাশিয়ো, আমি আপনার সমাধানটি কিছুটা বাড়িয়েছি এবং এটি এখানে পোস্ট করেছি কারণ এটিই মূলত আমি এসেছি। ধন্যবাদ! stackoverflow.com/questions/4051883/...
blak3r

16
ATউইন্ডোজ 8 এ কাজ করে না, তবে আমি এর থেকে আরও ভাল সমাধান খুঁজে পেয়েছি। আমি এটিকে অন্য প্রশ্নের উত্তর হিসাবে এখানে পোস্ট করেছি: stackoverflow.com/questions/4051883/…
mythofechelon

4
আমি হোয়ামি / গোষ্ঠীগুলির পরামর্শ দিই findstr / b বিল্টিন \ প্রশাসন | সন্ধান / সি: "সক্ষম গ্রুপ" && এর প্রতিধ্বনি "আমার প্রশাসক আছে!" - 95, 98, 2000, এক্সপি, ভিস্তা, 7, 8 এ কাজ করুন! (মন্তব্য থেকে "আমি এটিশির ব্যবহারে রুশির অভিযোজন পছন্দ করি" ...)
বারউনিকিক

4
আমি pingঅনুপস্থিত প্রতিস্থাপন করতে পছন্দ করি sleep:)
ম্যাথিউউ

100

এই কৌশলটির জন্য কেবল একটি কমান্ড প্রয়োজন: net sessionকমান্ড প্রম্পটে টাইপ করুন ।

আপনি যদি প্রশাসক না হন তবে আপনি একটি অ্যাক্সেস পান না বলে বার্তা বঞ্চিত হন।

System error 5 has occurred.

Access is denied.

আপনি যদি প্রশাসক হন তবে আপনি একটি পৃথক বার্তা পাবেন যা সর্বাধিক সাধারণ:

There are no entries in the list.

এমএস টেকনেট থেকে :

পরামিতি ছাড়াই ব্যবহৃত, নেট সেশন স্থানীয় কম্পিউটারের সাথে সমস্ত সেশন সম্পর্কিত তথ্য প্রদর্শন করে।


এটি রুশির জবাবের সাথে কার্যত অভিন্ন, এটি এটি কমান্ড ব্যবহার করেছিল।
জেফ

13
উইন্ডোজ ৮.১ এ এটিটি অগ্রাহ্য করা হয়, কারণ এটিটি হ্রাস করা হয়। Rushyo এর উত্তর ব্যবহার কিন্তু বদলে যেমন AT সঙ্গে নেট সেশন বা net.exe অধিবেশন আমার জন্য পুরোপুরি কাজ করে।
kayleeFrye_onDeck

এটি কমান্ড প্রম্পটে এটি করার সহজতম উপায় বলে মনে হচ্ছে (যা ব্যাচ ফাইলের চেয়ে পৃথক)।
এন্ডারল্যান্ড

4
শুধু কপি করে প্রিন্ট There are no entries in the list.প্রো উইন্ডোজ 10
gman

4
ব্যাচের ফাইলে এমন কিছু ব্যবহার করুন:net session >nul 2>&1 || (echo not admin&goto :eof)
23:59 এ 6

27

আমি এটি ব্যবহারের জন্য রুশির পরামর্শ পছন্দ করি তবে এটি অন্য একটি বিকল্প:

whoami /groups | findstr /b BUILTIN\Administrators | findstr /c:"Enabled group" && goto :isadministrator

এই পদ্ধতির সাহায্যে আপনাকে নন-অ্যাডমিনিস্ট্রেটর এবং অ-উন্নত প্রশাসকের মধ্যে পার্থক্য করতে দেয় যদি আপনি চান। অ-উন্নত প্রশাসকদের এখনও গ্রুপ তালিকায় বিল্টিন \ প্রশাসক রয়েছে তবে এটি সক্ষম নয়।

তবে এটি কিছু অ-ইংরাজী ভাষা সিস্টেমে কাজ করবে না। পরিবর্তে, চেষ্টা করুন

whoami /groups | findstr /c:" S-1-5-32-544 " | findstr /c:" Enabled group" && goto :isadministrator

(এটি উইন্ডোজ on এ কাজ করা উচিত তবে আমি পূর্ববর্তী সংস্করণগুলি সম্পর্কে নিশ্চিত নই))


4
পোলিশ সংস্করণে, আমার কাছে রয়েছে: বিল্টিন \ অ্যাডমিনিস্ট্রেটর, সুতরাং, আমি সুপারিশ করছি: হোয়ামি / গোষ্ঠীগুলি findstr / b বিল্টিন \ প্রশাসন | সন্ধানের / সি: "সক্ষম গ্রুপ" && গোটো: আইসডিমিনিস্টেরেটর
বারউনিকিক

@ বার্বনিক্ক, আমি প্রস্তাব দিচ্ছি whoami/groupsএবং তারপরে নিজেই লাইনগুলি স্ক্যান করব। খুব বেশি সময় লাগবে না এবং আদেশটি আপনার মস্তিষ্কে ফিট করে fits
পেসারিয়ার

@ পেসারিয়র: প্রশ্নের ব্যাচটি হ'ল একটি ব্যাচ ফাইলে উচ্চতা সনাক্ত করা । যদি কোনও ব্যক্তি কমান্ড লাইনে থাকে তবে তাদের কেবলমাত্র উইন্ডো শিরোনামটি দেখতে হবে যা আপনি উন্নত হলে সর্বদা "প্রশাসক:" শুরু করে starts
হ্যারি জনস্টন

@ হারি জোনস্টন, বাহ তা বুঝতে পারেনি। উইন্ডোজের সমস্ত সংস্করণের জন্য "প্রশাসক" শিরোনাম প্রদর্শিত হবে?
পেসারিয়ার

@ পেসারিয়র: সমস্ত বর্তমান সংস্করণ (ভিস্তা এর পরে)।
হ্যারি জনস্টন

26

অন্যরা যা রেখেছিল তা অনেক সুন্দর, তবে ব্যাচ কমান্ডের শুরুতে রাখা যেতে পারে এমন একটি লাইনার হিসাবে। (ভাল, সাধারণত @ ইকো অফ করার পরে।)

net.exe session 1>NUL 2>NUL || (Echo This script requires elevated rights. & Exit /b 1)

4
এটি আপ টু ডেট সংস্করণ এবং এটি নেট.এক্সেক্স থেকে অপ্রাসঙ্গিক আউটপুটটি সুন্দরভাবে আড়াল করে
অ্যান্ডারস্যান্ড

4
উইন্ডোজ 10 এ ভাল কাজ করে
জেমস প্যাক

দুর্দান্ত কাজ করেছেন, স্রেফ & টাইমআউট / টি 10 ​​& প্রস্থান / খ 1) এর শেষটি টিক দিলেন যাতে কোনও ব্যাচের ফাইলে উইন্ডোটি তত্ক্ষণাত না হয়ে যায়।
হুআইসরিচ

12

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

আমরা উন্নতভাবে চলছি কিনা তা পরীক্ষা করুন:

whoami /groups | find "S-1-16-12288" && Echo I am running elevated, so I must be an admin anyway ;-)

আমরা স্থানীয় প্রশাসকদের অন্তর্ভুক্ত কিনা তা পরীক্ষা করুন:

whoami /groups | find "S-1-5-32-544" && Echo I am a local admin

আমরা ডোমেন প্রশাসকদের অন্তর্ভুক্ত কিনা তা পরীক্ষা করুন:

whoami /groups | find "-512 " && Echo I am a domain admin

নীচের নিবন্ধটি এসআইডি উইন্ডোজগুলির ব্যবহারের জন্য অখণ্ডতা স্তরের তালিকাবদ্ধ করেছে: http ://msdn.mic Microsoft.com/en-us/library/bb625963.aspx


হুয়ামি / গোষ্ঠীগুলির একটি প্রান্ত মামলা রয়েছে যেখানে আপনি ভুল তথ্য পান। দেখুন stackoverflow.com/questions/4051883/...
zumalifeguard

7

এখানে হ্যারি এর উত্তরে সামান্য পরিবর্তন হয়েছে যা উন্নত স্থিতিতে ফোকাস করে; আমি এটি ইনস্টল.বাট ফাইলের শুরুতে ব্যবহার করছি:

set IS_ELEVATED=0
whoami /groups | findstr /b /c:"Mandatory Label\High Mandatory Level" | findstr /c:"Enabled group" > nul: && set IS_ELEVATED=1
if %IS_ELEVATED%==0 (
    echo You must run the command prompt as administrator to install.
    exit /b 1
)

এটি অবশ্যই আমার পক্ষে কাজ করেছে এবং নীতিটি যথাযথ বলে মনে হচ্ছে; থেকে MSFT ক্রিস জ্যাকসন :

আপনি যখন উন্নত অবস্থায় চলেছেন, আপনার টোকেনে একটি এসিই রয়েছে যা বাধ্যতামূলক লেবেল \ উচ্চ বাধ্যতামূলক স্তর called


হুয়ামি / গোষ্ঠীগুলির একটি প্রান্ত মামলা রয়েছে যেখানে আপনি ভুল তথ্য পান। দেখুন stackoverflow.com/questions/4051883/...
zumalifeguard

7

সমাধান:

at >nul
if %ErrorLevel% equ 0 ( echo Administrator ) else ( echo NOT Administrator )

উইন্ডোজ 10 এর অধীনে কাজ করে না

উইন্ডোজের সমস্ত সংস্করণের জন্য এটি করা যেতে পারে:

openfiles >nul 2>&1
if %ErrorLevel% equ 0 ( echo Administrator ) else ( echo NOT Administrator )

6

আমি প্রতিক্রিয়াগুলির অনেকগুলি (সর্বাধিক?) পড়েছি, তারপরে একটি ব্যাট ফাইল তৈরি করেছে যা উইন 8.1 এ আমার জন্য কাজ করে। ভেবেছিলাম ভাগ করে নিই।

setlocal
set runState=user
whoami /groups | findstr /b /c:"Mandatory Label\High Mandatory Level" > nul && set runState=admin
whoami /groups | findstr /b /c:"Mandatory Label\System Mandatory Level" > nul && set runState=system
echo Running in state: "%runState%"
if not "%runState%"=="user" goto notUser
  echo Do user stuff...
  goto end
:notUser
if not "%runState%"=="admin" goto notAdmin
  echo Do admin stuff...
  goto end
:notAdmin
if not "%runState%"=="system" goto notSystem
  echo Do admin stuff...
  goto end
:notSystem
echo Do common stuff...
:end

আশা করি কেউ এটি দরকারী খুঁজে পেয়েছেন :)


হুয়ামি / গোষ্ঠীগুলির একটি প্রান্ত মামলা রয়েছে যেখানে আপনি ভুল তথ্য পান। দেখুন stackoverflow.com/questions/4051883/...
zumalifeguard

এই জন্য আপনাকে ধন্যবাদ! অন্যান্য "হোয়ামি" সমাধানটি উইন্ডোজ ৮.১-এ আমার পক্ষে কার্যকর হয়নি। এই এক করেছে।
রায়ান


1

আমি জানি আমি এই পার্টিতে সত্যিই দেরি করেছি, তবে অ্যাডমিন-হুড নির্ধারণের জন্য আমার এক লাইনার এখানে।

এটি ত্রুটি স্তরের উপর নির্ভর করে না, কেবলমাত্র systeminfo:

for /f "tokens=1-6" %%a in ('"net user "%username%" | find /i "Local Group Memberships""') do (set admin=yes & if not "%%d" == "*Administrators" (set admin=no) & echo %admin%)

এটি হ্যাঁ বা না, ব্যবহারকারী প্রশাসকের স্থিতির উপর নির্ভর করে ফিরে আসে ...

এটি ভেরিয়েবলের "অ্যাডমিন" এর মানও হ্যাঁ বা না অনুসারে নির্ধারণ করে।


এটি কেবল তখনই কাজ করবে যদি ব্যবহারকারী প্রশাসকের স্থানীয় গোষ্ঠীর সরাসরি সদস্য হয়। ব্যবহারকারী যদি কোনও ডোমেন গোষ্ঠীর সদস্য হন (যেমন, "ডোমেন অ্যাডমিনস") যা প্রশাসক গোষ্ঠীর সদস্য, এটি কাজ করবে না।
হ্যারি জনস্টন

1

আপনি যদি প্রশাসকের অধিকার নিয়ে ব্যবহারকারী হিসাবে চলমান থাকেন তবে পরিবেশ পরিবর্তনশীল সেশননাম সংজ্ঞায়িত হবে না এবং ব্যাচ ফাইল চালানোর সময় আপনার প্রশাসকের অধিকার নেই।

প্রশাসকের অধিকার যাচাই করতে আপনার "নেট সেশন" কমান্ডটি ব্যবহার করা উচিত এবং "0" এর ত্রুটি রিটার্ন কোডের সন্ধান করা উচিত।

উদাহরণ; - প্রথম প্রতিধ্বনি বিবৃতিটি বেল চরিত্রটি net session >nul 2>&1 if not %errorlevel%==0 (echo echo You need to start over and right-click on this file, echo then select "Run as administrator" to be successfull. echo.&pause&exit)


0

উইন্ডোজ ১০-এর মাধ্যমে আমি উইন্ডোজ on-তে ব্যবহার করার জন্য একটি সহজ পদ্ধতিটি এখানে মূলত, আমি উইন্ডোজ \ সিস্টেম 32 \ ডাব্লুআইডিআই \ লগফায়ার ফোল্ডারটি পরীক্ষা করার জন্য কেবল "IF উপস্থিত" কমান্ডটি ব্যবহার করি। কমপক্ষে from থেকে উইন্ডোজের প্রতিটি ইনস্টল-এ ডাব্লুআইডিআই ফোল্ডারটি বিদ্যমান এবং এর অ্যাক্সেসের জন্য প্রশাসকের অধিকার প্রয়োজন privile ডাব্লুআইডিআই ফোল্ডারের সর্বদা এর ভিতরে একটি লগফিলস ফোল্ডার থাকে। সুতরাং, ডাব্লুআইডিআই \ লগ ফাইলে ফোল্ডারে "যদি উপস্থিত থাকে" চালানো অ্যাডমিন হিসাবে চালিত হয় তবে সত্য এবং অ্যাডমিন হিসাবে চালানো না হলে এটি মিথ্যা হয়ে যায়। এটি কোনও ব্যাচ ফাইলে সুবিধাগুলির স্তর যাচাই করতে এবং সেই ফলাফলের উপর ভিত্তি করে আপনার যে কোনও আদেশের ইচ্ছা তা শাখায় ব্যবহার করা যেতে পারে।

উদাহরণ কোডের একটি সংক্ষিপ্ত স্নিপেট এখানে:

IF EXIST %SYSTEMROOT%\SYSTEM32\WDI\LOGFILES GOTO GOTADMIN
(Commands for running with normal privileges)

:GOTADMIN
(Commands for running with admin privileges)

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

এই পদ্ধতি সম্পর্কে দুটি সতর্কতা রয়েছে যদিও:

  1. ইউএসি অক্ষম করার ফলে সম্ভবত এটিকে অ্যাডমিন হিসাবে চালানো হবে এমন সাধারণ সত্যটি হয়ে যায়।

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

সুতরাং, স্বীকার করা যে আমার পদ্ধতিটি একেবারে ভেঙে যেতে পারে নিখুঁত নয়, তবে এটি তুলনামূলক দ্রুত পদ্ধতি যা কার্যকর করা সহজ, উইন্ডোজ 7, ​​8 এবং 10 এর সমস্ত সংস্করণের সাথে সমানভাবে সামঞ্জস্যপূর্ণ, এবং আমি প্রদত্ত ক্যাভ্যাটগুলির প্রতি আমি সচেতন থাকি আমার জন্য 100% কার্যকর ছিল।


0

উইন 7 এন্টারপ্রাইজ এবং উইন 10 এন্টারপ্রাইজের পক্ষে কাজ করে

@if DEFINED SESSIONNAME (
    @echo.
    @echo You must right click to "Run as administrator"
    @echo Try again
    @echo.
    @pause
    @goto :EOF
)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.