ব্যাচের স্ক্রিপ্ট: অ্যাডমিনের অধিকার কীভাবে চেক করা যায়


281

বর্তমান ব্যাচের স্ক্রিপ্টের প্রশাসকের অধিকার আছে কিনা তা আমি কীভাবে পরীক্ষা করব?

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


2
আপনি ডানটি পরিবর্তন করতে পারার পরে: [কোনও ব্যাচের ফাইলের মধ্যে প্রশাসকের অ্যাক্সেসের জন্য কীভাবে অনুরোধ করবেন] [1] [1]: স্ট্যাকওভারফ্লো
আলবান



আরও দেখুন: superuser.com/questions/667607/…
ivan_pozdeev

উত্তর:


466

সমস্যা

ব্ল্যাক 3 আর / রুশির সমাধান উইন্ডোজ 8 ব্যতীত সকল কিছুর জন্য দুর্দান্ত কাজ করে 8 উইন্ডোজ 8 এ চালানো ATফলাফল:

The AT command has been deprecated. Please use schtasks.exe instead.

The request is not supported.

(স্ক্রিনশট # 1 দেখুন) এবং ফিরে আসবে %errorLevel% 1

 

গবেষণা

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

শেষ পর্যন্ত, আমি একটি খুঁজে পেয়েছি - NET SESSION। একটি সত্য , পরিষ্কার, সর্বজনীন সমাধান যা এতে জড়িত না:

  • সুরক্ষিত অবস্থানগুলিতে ডেটা তৈরি বা ইন্টারঅ্যাকশন
  • FORলুপ থেকে ফিরে ডেটা বিশ্লেষণ
  • "প্রশাসক" এর জন্য অনুসন্ধানের পংক্তি
  • ব্যবহার AT(উইন্ডোজ 8 বেমানান) অথবা WHOAMI(উইন্ডোজ এক্সপি বেমানান)।

যার প্রত্যেকটির নিজস্ব সুরক্ষা, ব্যবহারযোগ্যতা এবং বহনযোগ্যতার সমস্যা রয়েছে।

 

পরীক্ষামূলক

আমি স্বাধীনভাবে নিশ্চিত করেছি যে এটি কাজ করে:

  • উইন্ডোজ এক্সপি, x86
  • উইন্ডোজ এক্সপি, এক্স 64
  • উইন্ডোজ ভিস্তা, x86
  • উইন্ডোজ ভিস্তা, এক্স 64
  • উইন্ডোজ 7, ​​x86
  • উইন্ডোজ 7, ​​এক্স 64
  • উইন্ডোজ 8, x86
  • উইন্ডোজ 8, এক্স 64
  • উইন্ডোজ 10 v1909, x64

(স্ক্রিনশট # 2 দেখুন)

 

বাস্তবায়ন / ব্যবহার

সুতরাং, এই সমাধানটি ব্যবহার করার জন্য, এই জাতীয় কিছু করুন:

@echo off
goto check_Permissions

:check_Permissions
    echo Administrative permissions required. Detecting permissions...

    net session >nul 2>&1
    if %errorLevel% == 0 (
        echo Success: Administrative permissions confirmed.
    ) else (
        echo Failure: Current permissions inadequate.
    )

    pause >nul

আপনি যদি অলস হন তবে এখানে উপলভ্য: https://dl.roidbox.com/u/27573003/ বিতরণ / বিনাইনস / চেক_প্রেমিশনগুলি

 

ব্যাখ্যা

NET SESSION"সার্ভার কম্পিউটার সংযোগ পরিচালনা করার জন্য ব্যবহৃত একটি স্ট্যান্ডার্ড কমান্ড para পরামিতি ছাড়াই ব্যবহৃত হয়, [এটি] স্থানীয় কম্পিউটারের সাথে সমস্ত সেশন সম্পর্কে তথ্য প্রদর্শন করে।"

সুতরাং, আমার প্রদত্ত বাস্তবায়নের প্রাথমিক প্রক্রিয়াটি এখানে:

  1. @echo off
    • কমান্ড প্রদর্শন করা অক্ষম করুন
  2. goto check_Permissions
    • ঝাঁপ দাও :check_Permissionsকোড ব্লক
  3. net session >nul 2>&1
    • আপনার আদেশ প্রদান করুন
    • দ্বারা কমান্ডের ভিজ্যুয়াল আউটপুট লুকান
      1. মান আউটপুট (সংখ্যাসূচক হ্যান্ডেল 1 / STDOUT) স্ট্রিমে পুনঃনির্দেশ করা হচ্ছেnul
      2. স্ট্যান্ডার্ড ত্রুটি আউটপুট স্ট্রিম (সংখ্যাসূচক হ্যান্ডেল 2 / STDERR) সংখ্যাসূচক হ্যান্ডেল 1 এর মতো একই গন্তব্যে পুনর্নির্দেশ করা
  4. if %errorLevel% == 0
    • যদি প্রস্থান কোড ( %errorLevel%) এর মান হয় 0 তবে এর অর্থ হ'ল কোনও ত্রুটি ঘটেনি এবং তাই তত্ক্ষণাত্ পূর্ববর্তী কমান্ডটি সাফল্যের সাথে চলে
  5. else
    • যদি প্রস্থান কোড ( %errorLevel%) এর মান না হয় 0 তবে এর অর্থ হ'ল ত্রুটিগুলি ঘটেছে এবং তাই তত্ক্ষণাত্ পূর্ববর্তী কমান্ডটি ব্যর্থ হয়েছে
  6. স্বতন্ত্র বন্ধনীগুলির মধ্যে কোডটি নির্ধারণ করা হবে যা কোন মানদণ্ড পূরণ হয় তার উপর নির্ভর করে

 

স্ক্রীনশট

উইন্ডোজ 8AT %errorLevel% :

[Imgur]

 

NET SESSIONউইন্ডোজ এক্সপি x86 - উইন্ডোজ 8 x64 এ :

[Imgur]

 

আপনাকে ধন্যবাদ, টিলকা, আমার কাছে আপনার গৃহীত উত্তর পরিবর্তন করার জন্য। :)


13
+1 দুর্দান্ত কাজ! ভাল গবেষণা। আপনার পোস্টটি নতুন স্বীকৃত উত্তরের যোগ্য হওয়া উচিত।
blak3r

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

3
: @Lectrode আমি একটি বিকল্প সমাধান যা একই সমস্যা নেই পোস্ট করেছেন stackoverflow.com/questions/4051883/...
and31415

8
যদি ব্যবহারকারী কোনও পাওয়ার ব্যবহারকারী হয় তবে এই কোডটি একটি মিথ্যা ইতিবাচক (কমপক্ষে উইন্ডোজ 7 এ) প্রদান করে। একটি পাওয়ার ব্যবহারকারীও "উন্নত" করতে পারে এবং তারপরে net sessionসফলভাবে চালাতে পারে (ERRORLEVEL = 0) - তবে তাদের আসলে প্রশাসকের অধিকার নেই। ব্যবহার openfiles(দ্বারা উত্তর দেখার Lucretius নীচে) এই সমস্যা নেই।
EM0

1
যদি নেটওয়ার্ক ডিভাইস পুরোপুরি কাজ না করে তবে এটি প্রম্পটটি স্তব্ধ করে (যেমন: উইন্ডোজ ডিবাগিং)। fltmc> nul 2> & 1 এ ক্ষেত্রে আরও ভাল কাজ করে।
কেভিনফ

80

অ্যান্ডারস সলিউশনটি আমার পক্ষে কাজ করেছে তবে আমি নিশ্চিত ছিলাম না যে কীভাবে এটি বিপরীতমুখী করে তুলবে (যখন আপনি প্রশাসক ছিলেন না)।

এখানে আমার সমাধান। এটিতে দুটি আইএফ এবং ইএলএসই মামলা রয়েছে এবং লোকেরা এটি পড়তে পারে তা নিশ্চিত করার জন্য কিছু আসকি শিল্প রয়েছে। :)

নূন্যতম সংস্করণ

রুশ्यो এই সমাধানটি এখানে পোস্ট করেছেন: সিএমডি প্রশাসক হিসাবে চালিত হচ্ছে / কীভাবে উন্নত সুযোগ-সুবিধা পেয়েছে তা কীভাবে সনাক্ত করব?

NET SESSION >nul 2>&1
IF %ERRORLEVEL% EQU 0 (
    ECHO Administrator PRIVILEGES Detected! 
) ELSE (
    ECHO NOT AN ADMIN!
)

সংস্করণ যা ত্রুটি বার্তা, বিরতি এবং প্রস্থান যুক্ত করে

@rem ----[ This code block detects if the script is being running with admin PRIVILEGES If it isn't it pauses and then quits]-------
echo OFF
NET SESSION >nul 2>&1
IF %ERRORLEVEL% EQU 0 (
    ECHO Administrator PRIVILEGES Detected! 
) ELSE (
   echo ######## ########  ########   #######  ########  
   echo ##       ##     ## ##     ## ##     ## ##     ## 
   echo ##       ##     ## ##     ## ##     ## ##     ## 
   echo ######   ########  ########  ##     ## ########  
   echo ##       ##   ##   ##   ##   ##     ## ##   ##   
   echo ##       ##    ##  ##    ##  ##     ## ##    ##  
   echo ######## ##     ## ##     ##  #######  ##     ## 
   echo.
   echo.
   echo ####### ERROR: ADMINISTRATOR PRIVILEGES REQUIRED #########
   echo This script must be run as administrator to work properly!  
   echo If you're seeing this after clicking on a start menu icon, then right click on the shortcut and select "Run As Administrator".
   echo ##########################################################
   echo.
   PAUSE
   EXIT /B 1
)
@echo ON

WinXP -> Win8 (32/64 বিট সংস্করণ সহ) এ কাজ করে।

সম্পাদনা: 8/28/2012 উইন্ডোজ 8 সমর্থন করার জন্য আপডেট করা হয়েছে। @ বেনহুপার নীচে তার উত্তরে এটি উল্লেখ করেছেন। দয়া করে তার উত্তর upvote।


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

1
আমি ভাবছি যদি প্রথম কোড-ব্লকের% ত্রুটিযুক্ত% == / EQU এর দুটি লাইন যদি TYPO হয় তবে দয়া করে সঠিক করুন।
উজ্জ্বল সিং

@ উজ্জ্বলসিংহ এটি নিশ্চিত ছিল। ধরার জন্য ধন্যবাদ আমি এটি আপডেট করেছি।
blak3r

আপনি কি আমার সমাধানটি ব্যবহার করছেন এখন আমার সম্পর্কে আপনার মন্তব্য দিয়ে "রাশিয়ো এখানে এই সমাধান পোস্ট করেছেন" প্রতিস্থাপন করতে পারে? :)
মিথু ফেচেলন

স্থানীয় মেশিনে প্রশাসক গোষ্ঠীতে যুক্ত ডোমেন প্রশাসক গোষ্ঠীর জন্য কাজ করে না এবং ডোমেন প্রশাসক ব্যবহারকারীর সাথে লগইন করে।
এমসিআরসিহিথ

46

আরও সমস্যা

@ ল্যাক্ট্রোড দ্বারা চিহ্নিত হিসাবে, net sessionসার্ভার পরিষেবা বন্ধ হওয়ার সময় আপনি যদি কমান্ডটি চালানোর চেষ্টা করেন, আপনি নিম্নলিখিত ত্রুটি বার্তাটি পান:

The Server service is not started.

More help is available by typing NET HELPMSG 2114

এই ক্ষেত্রে %errorLevel%ভেরিয়েবল সেট করা হবে 2

দ্রষ্টব্য নিরাপদ মোডে থাকাকালীন সার্ভার পরিষেবাটি চালু করা হয়নি (নেটওয়ার্কিং সহ বা ছাড়া)।

বিকল্প খুঁজছি

সে রকম কিছুই:

  • উইন্ডোজ এক্সপি এবং পরে (32 এবং 64 বিট) এর বাক্সটি বাইরে চলে যেতে পারে;
  • রেজিস্ট্রি বা কোনও সিস্টেম ফাইল / ফোল্ডার স্পর্শ করে না;
  • সিস্টেম লোকাল নির্বিশেষে কাজ করে;
  • এমনকি নিরাপদ মোডে সঠিক ফলাফল দেয়।

তাই আমি একটি ভ্যানিলা উইন্ডোজ এক্সপি ভার্চুয়াল মেশিন বুট করেছি এবং আমি C:\Windows\System32কিছু ধারণা পাওয়ার চেষ্টা করে ফোল্ডারে অ্যাপ্লিকেশনগুলির তালিকার মাধ্যমে স্ক্রোল করা শুরু করি । ট্রায়াল এবং ত্রুটি পরে, এই হল মলিন (শ্লেষ উদ্দেশ্যে) কাছে আমি সঙ্গে আসা পর্যন্ত করেছি:

fsutil dirty query %systemdrive% >nul

fsutil dirtyকমান্ড প্রয়োগ করা প্রশাসনিক অধিকার প্রয়োজন, এবং অন্যথায় ব্যর্থ হবে। %systemdrive%একটি পরিবেশ পরিবর্তনশীল যা অপারেটিং সিস্টেম ইনস্টল থাকা ড্রাইভ চিঠিটি দেয় returns আউটপুটটিকে পুনঃনির্দেশিত করা হয় nul, এভাবে উপেক্ষা করা হবে। %errorlevel%ভেরিয়েবলটি কেবল 0সফল সম্পাদন হলে সেট করা হবে ।

এখানে ডকুমেন্টেশন যা বলে:

ময়লা নোংরা

অনুসন্ধান বা একটি ভলিউমের নোংরা বিট সেট করে। যখন কোনও ভলিউমের নোংরা বিট সেট করা থাকে, অটোচেক পরের বার কম্পিউটারটি পুনরায় চালু করার সময় স্বয়ংক্রিয়ভাবে ত্রুটির জন্য ভলিউমটি পরীক্ষা করে।

বাক্য গঠন

fsutil dirty {query | set} <VolumePath>

পরামিতি

query           Queries the specified volume's dirty bit.
set             Sets the specified volume's dirty bit.
<VolumePath>    Specifies the drive name followed by a colon or GUID.

মন্তব্য

একটি ভলিউমের নোংরা বিট নির্দেশ করে যে ফাইল সিস্টেমটি একটি বেমানান অবস্থায় থাকতে পারে। নোংরা বিট সেট করা যেতে পারে কারণ:

  • ভলিউমটি অনলাইনে রয়েছে এবং এতে অসামান্য পরিবর্তন রয়েছে।
  • পরিবর্তনগুলি ডিস্কে প্রতিশ্রুতি দেওয়ার আগে ভলিউমের পরিবর্তন হয়েছিল এবং কম্পিউটারটি বন্ধ হয়ে যায়।
  • আয়তনে দুর্নীতি শনাক্ত করা হয়েছে।

কম্পিউটারটি পুনরায় চালু হলে মলিন বিটটি সেট করা থাকলে, chkdsk ফাইল সিস্টেমের সততা যাচাই করতে এবং ভলিউম সহ কোনও সমস্যা সমাধানের চেষ্টা করার জন্য চালিত হয়।

উদাহরণ

ড্রাইভ সি-তে নোংরা বিটটি জিজ্ঞাসা করতে, টাইপ করুন:

fsutil dirty query C:

আরও গবেষণা

উইন্ডোজ এক্সপি থেকে উপরের সমাধানটি কাজ করার পরে, এটি যুক্ত করা উচিত যে উইন্ডোজ 2000 এবং উইন্ডোজ পিই (প্রাক-ইনস্টল করা পরিবেশ) আসে না fsutil.exe , তাই আমাদের অন্য কোনও বিষয় অবলম্বন করতে হবে।

আমার পূর্ববর্তী পরীক্ষাগুলির সময় আমি লক্ষ্য করেছি যে sfcকোনও পরামিতি ছাড়াই কমান্ডটি চালনার ফলে ফলাফল হবে:

  • একটি ত্রুটি, যদি আপনার পর্যাপ্ত অধিকার না থাকে;
  • উপলব্ধ পরামিতিগুলির তালিকা এবং তাদের ব্যবহার।

এটি: কোনও পরামিতি নেই, কোনও পার্টি নেই । ধারণাটি হ'ল আমরা আউটপুটটি বিশ্লেষণ করতে পারি এবং ত্রুটি ছাড়া আমাদের কিছু পাওয়া গেছে কিনা তা পরীক্ষা করতে পারি:

sfc 2>&1 | find /i "/SCANNOW" >nul

ত্রুটি আউটপুট প্রথমে স্ট্যান্ডার্ড আউটপুটটিতে পুনর্নির্দেশ করা হয়, যা পরে findকমান্ডে পাইপ করা হয় । এই মুহুর্তে আমরা জন্য সন্ধান আছে শুধুমাত্র যে পরামিতি সব উইন্ডোজ সংস্করণে সমর্থিত উইন্ডোজ 2000 সাল থেকে: /SCANNOW। অনুসন্ধানটি কেস সংবেদনশীল এবং আউটপুটটিকে এটিকে পুনর্নির্দেশ করে ফেলে দেওয়া হবে nul

ডকুমেন্টেশনের একটি অংশ এখানে দেওয়া হয়েছে:

এসএফসি

সমস্ত সুরক্ষিত সিস্টেম ফাইলগুলির অখণ্ডতা স্ক্যান করে এবং যাচাই করে এবং সঠিক সংস্করণগুলির সাথে ভুল সংস্করণগুলিকে প্রতিস্থাপন করে।

মন্তব্য

Sfc.exe চালাতে আপনাকে অবশ্যই প্রশাসক গোষ্ঠীর সদস্য হিসাবে লগ ইন করতে হবে ।

নমুনা ব্যবহার

এখানে কয়েকটি পেস্ট এবং রান উদাহরণ রয়েছে:

উইন্ডোজ এক্সপি এবং তারপরে

@echo off

call :isAdmin
if %errorlevel% == 0 (
echo Running with admin rights.
) else (
echo Error: Access denied.
)

pause >nul
exit /b

:isAdmin
fsutil dirty query %systemdrive% >nul
exit /b

উইন্ডোজ 2000 / উইন্ডোজ পিই

@echo off

call :isAdmin
if %errorlevel% == 0 (
echo Running with admin rights.
) else (
echo Error: Access denied.
)

pause >nul
exit /b

:isAdmin
sfc 2>&1 | find /i "/SCANNOW" >nul
exit /b

প্রযোজ্য

  • উইন্ডোজ 2000
  • উইন্ডোজ এক্সপি
  • উইন্ডোজ ভিস্তা
  • উইন্ডোজ 7
  • জানালা 8
  • উইন্ডোজ 8.1
    ---
  • উইন্ডোজ পিই

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

1
যে কোনও ব্যক্তির SFCজন্য সমস্ত সিস্টেমে চেকটি ব্যবহার করতে চাইছেন, আপনার কিছুটা সৃজনশীল হওয়া দরকার। কোনও কারণে, উইন্ডোজ 8 দিয়ে শুরু করা SFCকেবলমাত্র একক অক্ষরকে আউটপুট করে। আউটপুট সফলভাবে পার্স করার জন্য আপনাকে নিম্নলিখিতগুলি করতে হবে: setlocal enabledelayedexpansion for /f "tokens=* delims=" %%s in ('sfc 2^>^&1^|MORE') do @set "output=!output!%%s" echo "%output%"|findstr /I /C:"/scannow">nul 2>&1(3 পৃথক লাইন) এটি উইন্ডোজ 2000 আর 2 এর মাধ্যমে উইন্ডোজ 2000 এ কাজ করা উচিত। সাইড নোটে, আমি FINDSTR পছন্দ করি কারণ এটি সাধারণত FIND এর চেয়ে বেশি দ্রুত প্রসেস করে।
লেট্রোড

দুর্দান্ত কাজ, @ and31415! আমি fsutilএখনও ব্যক্তিগতভাবে আপনার সমাধানটি পরীক্ষা করে দেখিনি তবে, আমি যা দেখতে পাচ্ছি তা থেকে আমার সমাধানের চেয়ে এটি অনেক বেশি নমনীয় বলে মনে হয়। যদিও, বেশ মার্জিত নাও হতে পারে। ;) আমি দেখতে পেরে আনন্দিত যে, আমাদের মধ্যে আমরা একটি দুর্দান্ত, সহজ এবং নমনীয় অ্যাডমিন-সনাক্তকরণ সমাধানটি পিন করে রেখেছি। :)
মিথোফেলন

1
এফএসইটিআইএল চলাকালীন আপনি ড্রাইভ চিঠিটি ছেড়ে দিতে পারেন এবং fsutil dirty query >nulউন্নত হলে কেবল চালানো যেতে পারে এটির সাহায্যের কিছু পাঠ্য এবং% ত্রুটিযুক্ত% = 0
এসএস 64

4
@ এসএস 64৪ উইন্ডোজ 10 আর এর জন্য ননজারো ত্রুটির স্তর আর দেয় না fsutil dirty query >nul, তবে fsutil dirty query %systemdrive% >nulএখনও কাজ করে
খ্রিস্ট

19

আরও দুটি উপায় - দ্রুত এবং পিছনে সামঞ্জস্যপূর্ণ।

fltmc >nul 2>&1 && (
  echo has admin permissions
) || (
  echo has NOT admin permissions
)

fltmc এক্সপি থেকে প্রতিটি উইন্ডোজ সিস্টেমে কমান্ড পাওয়া যায় তাই এটি দুর্দান্ত পোর্টেবল হওয়া উচিত।


আরও একটি সত্যিই দ্রুত সমাধান উপর পরীক্ষা XP, 8.1, 7 - সেখানে একটি নির্দিষ্ট পরিবর্তনশীল এর =::যা শুধুমাত্র যদি কনসোল সেশন কোন অ্যাডমিন privileges.As এটা এত সহজ পরিবর্তনশীল যে রয়েছে তৈরি করতে নয় গেছে উপস্থাপন করা হয় =এটা নামে এই তুলনামূলকভাবে নির্ভরযোগ্য অ্যাডমিন জন্য চেক করতে উপায় অনুমতি (এটি বাহ্যিক এক্সিকিউটেবলকে কল করে না তাই এটি ভাল সম্পাদন করে)

setlocal enableDelayedExpansion
set "dv==::"
if defined !dv! ( 
   echo has NOT admin permissions
) else (
   echo has admin permissions
)

আপনি যদি কমান্ড লাইনের মাধ্যমে সরাসরি এটি ব্যবহার করতে চান তবে কোনও ব্যাচ ফাইল থেকে আপনি ব্যবহার করতে পারেন:

set ^"|find "::"||echo has admin permissions

মহাকাব্য ... সেট "ডিভি == ::" সমাধানের কি কোনও ত্রুটি / সীমাবদ্ধতা আছে?
স্ক্রিপ্ট'অনকোড

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

1
@ কপিটাইট্রেট - এটি পরীক্ষা করার জন্য আমার কাছে উইন 10 মেশিন ছিল না :( যদিও =::পরিবর্তনশীলের অস্তিত্ব বরং একটি বাগ - এটি একটি বিদ্যমান ড্রাইভকে উপস্থাপন করে, তাই সম্ভবত এটি উইন 10-এ স্থির করা হয়েছিল।
npocmaka

তারা সম্ভবত এটি হ্যাঁ প্যাচ করেছেন। এটা মজা ছিল যখন এটা টিকেছিল।
স্ক্রিপ্ট'ন'কোড

1
আমি দেখতে পাচ্ছি =::উইন্ডোজ 10 1709-এ নন অ্যাডমিন সিএমডি-এর জন্য সংজ্ঞায়িত Any যাইহোক এটি কোনও নির্ভরযোগ্য উপায় নয়, আপনি এডমিন সিএমডি সেশনেও সহজেই এটি সংজ্ঞায়িত করতে বাধ্য করতে পারেন:subst :: c:\ & for %a in (::) do %a & set,

17
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"&&(
 echo admin...
)

1
দেখে মনে হয় কিছু ক্ষেত্রে পরীক্ষা সর্বদা ব্যর্থ হয় এমনকি উন্নীত হওয়ার পরেও। আমার ক্ষেত্রে যখন স্ক্রিপ্টটি আমার অ্যাপ্লিকেশন দ্বারা কল করা হয়েছিল।
বোলেলাও

15

বিকল্প সমাধান:

@echo off
pushd %SystemRoot%
openfiles.exe 1>nul 2>&1
if not %errorlevel% equ 0 (
    Echo here you are not administrator!
) else (
    Echo here you are administrator!
)
popd
Pause

7
আপনি কি আপনার উত্তরের একটি ব্যাখ্যা যোগ করতে পারেন?
bjb568

4
এই কোডটি প্রশ্নের উত্তর দিতে পারে যদিও এটি কেন এটি করে সে সম্পর্কে আপনার কিছু ব্যাখ্যা যুক্ত করা উচিত।
প্লাজমাএইচএইচ

2
হ্যাঁ! ব্যবহারকারী কোনও পাওয়ার ব্যবহারকারী হয়ে থাকলেও এটি সঠিকভাবে কাজ করে ("নেট সেশন" এর বিপরীতে)। যদিও ধাক্কা / পপডের প্রয়োজন নেই। কেবল চালানো openfilesএবং ERRORLEVEL পরীক্ষা করা যথেষ্ট।
EM0

2
আমি এই সমাধানটি ব্যবহার করছি এবং এটি দুর্দান্ত কাজ করছে। সমস্যাটি এটি openfiles.exeWinPE তে কাজ করে না, সুতরাং স্ক্রিপ্টটি সর্বদা ফিরিয়ে দেবে যে ব্যবহারকারী প্রশাসক নয়।
ওয়েফেরার

ওপেন ফাইলস.এক্স.সি. এর জন্য ডকুমেন্টেশন পাওয়া যাবে যাবে1>এবং মাইক্রোসফ্ট / রিসোর্স / ডকুমেন্টেশন / উইন্ডোস / এক্সপ্রেস / সব / প্রোডাকডোক্স / ......... এ2>&1 ব্যাখ্যা করা হয়েছে । নাল ডিভাইসকে বোঝায়nul
ব্যবহারকারী 1460043

13

শুধুমাত্র চেক করুন না তবে অ্যাডমিনের অধিকারগুলি স্বয়ংক্রিয়ভাবে
ওরফ উইন 7/8 / 8.1 এফএফ এর জন্য স্বয়ংক্রিয় ইউএসি পাবেন।
: নীচে আরও একটি বৈশিষ্ট্য সহ একটি দুর্দান্ত একটি: এই ব্যাচের স্নিপেট কেবল অ্যাডমিনের অধিকারের জন্য যাচাই করে না, সেগুলি স্বয়ংক্রিয়ভাবে পায়! (এবং এর আগে পরীক্ষাগুলি, যদি কোনও ইউএসি সক্ষম ওএসে থাকে।)

এই কৌশলটির সাথে আপনার ব্যাচ ফাইলে "অ্যাডমিন রাইটস সহ" ডানদিকে ক্লিক করার দরকার নেই। আপনি যদি ভুলে গিয়ে থাকেন তবে উন্নত অধিকারের সাথে এটি শুরু করতে, ইউএসি স্বয়ংক্রিয়ভাবে উঠে আসে! যাইহোক, প্রথমে এটি পরীক্ষা করা হয়, যদি ওএসের প্রয়োজন হয় / ইউএসি সরবরাহ করে, তাই এটি উইন 2000 / এক্সপি-র উইন 8.1- পরীক্ষা না হওয়া পর্যন্ত সঠিক আচরণ করে।

@echo off
REM Quick test for Windows generation: UAC aware or not ; all OS before NT4 ignored for simplicity
SET NewOSWith_UAC=YES
VER | FINDSTR /IL "5." > NUL
IF %ERRORLEVEL% == 0 SET NewOSWith_UAC=NO
VER | FINDSTR /IL "4." > NUL
IF %ERRORLEVEL% == 0 SET NewOSWith_UAC=NO


REM Test if Admin
CALL NET SESSION >nul 2>&1
IF NOT %ERRORLEVEL% == 0 (

    if /i "%NewOSWith_UAC%"=="YES" (
        rem Start batch again with UAC
        echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
        echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
        "%temp%\getadmin.vbs"
        del "%temp%\getadmin.vbs"
        exit /B
    )

    rem Program will now start again automatically with admin rights! 
    rem pause
    goto :eof
)

স্নিপেট কিছু ভাল ব্যাচের নিদর্শন একসাথে একত্রিত করে, বিশেষত (1) বেন হুপারের এই থ্রেডে অ্যাডমিন পরীক্ষা এবং (2) ব্যাচগোটএডমিনে ইউএসি অ্যাক্টিভেশন পড়ে এবং রবভান্ডারউউডে (সম্মান) দ্বারা ব্যাচ সাইটে উদ্ধৃত করা হয়। (3) "VER | FINDSTR প্যাটার্ন" দ্বারা ওএস শনাক্তকরণের জন্য আমি কেবল রেফারেন্সটি পাই না))

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


এটা অসাধারণ! একটি জিনিস নোট করুন - ভিজ্যুয়াল বেসিক থেকে এটিকে কল করা যেমন কাজ করে start- এটি একটি নতুন উইন্ডোতে স্ক্রিপ্টটি খোলে। আপনি যদি ফলাফল দেখতে চান - pauseআপনার স্ক্রিপ্টের শেষে একটি যুক্ত করুন । এছাড়াও, এটি সনাক্ত করা শক্ত, যখন আমরা "উন্নত" থাকি এবং যখন পুনরায় কাজ হয়। আপনি তার জন্য একটি কমান্ড লাইন যুক্তি ব্যবহার করতে পারেন: github.com/tgandor/meats/blob/master/lang_lawyer/Cmd/…
টমাসজ গ্যান্ডার

@ ফিল্ম: যদি ইউএসি-র ব্যবহারকারীদের তাদের পাসওয়ার্ড প্রবেশের প্রয়োজন হয়? আমি ধরে নিয়েছি এই কোডটি তাদের ব্যবহারকারীর প্রথমে পাসওয়ার্ড প্রবেশ করানো ছাড়া স্বয়ংক্রিয়ভাবে
প্রশাসনের

@copyitright। না অবশ্যই না. তবে পাসওয়ার্ডের প্রয়োজনীয়তা থাকলে বা না পার্থক্য এখানে না থাকলে: "স্বয়ংক্রিয়ভাবে" দিয়ে আমি যা বোঝাতে চেয়েছিলাম তা অবশ্যই হ'ল স্ক্রিপ্টটি উইন্ডোজকে অধিকারের জন্য স্বয়ংক্রিয়ভাবে জিজ্ঞাসাবাদকে ট্র্যাক করে, আরও বেশি নয়। এই জাতীয় নির্মাণ ব্যতীত, ডাবল ক্লিক বা অনুরূপ দ্বারা শুরু করা হলে ব্যাচের স্ক্রিপ্টটি ব্যর্থ হবে। এটি এড়ানোর জন্য, ব্যবহারকারীকে আগেই জানতে হবে যে স্ক্রিপ্টটির জন্য উন্নত অধিকারের প্রয়োজন হয় এবং এটি এটি শুরু করতে হয়েছিল।
ফিল্ম

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

12

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

1. পদ্ধতি

set guid=%random%%random%-%random%-%random%-%random%-%random%%random%%random%

mkdir %WINDIR%\%guid%>nul 2>&1
rmdir %WINDIR%\%guid%>nul 2>&1

IF %ERRORLEVEL%==0 (
    ECHO PRIVILEGED!
) ELSE (
    ECHO NOT PRIVILEGED!
)

এটি অন্যতম নির্ভরযোগ্য পদ্ধতি, এর সরলতার কারণে এবং খুব আদিম কমান্ডের আচরণের পরিবর্তনের খুব সম্ভাবনা নেই। নেট সেশনের মতো অন্যান্য অন্তর্নির্মিত সিএলআই সরঞ্জামগুলির ক্ষেত্রে এটি এডমিন / নেটওয়ার্ক নীতিগুলি দ্বারা অক্ষম করা যেতে পারে, বা fsutils এর মতো আদেশগুলি নয় is উইন্ডোজ 10 এ আউটপুট পরিবর্তন করে ।

* এক্সপি এবং পরে কাজ করে

2. পদ্ধতি

REG ADD HKLM /F>nul 2>&1

IF %ERRORLEVEL%==0 (
    ECHO PRIVILEGED!
) ELSE (
    ECHO NOT PRIVILEGED!
)

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

এর জন্য আপনি HKEY_LOCAL_MACHINE- এ একটি কী তৈরি করার চেষ্টা করতে পারেন ডিফল্ট অনুমতি ব্যবহার করে আপনি অ্যাক্সেস অস্বীকৃত এবং পেয়ে যাবেন ERRORLEVEL == 1তবে আপনি যদি প্রশাসক হিসাবে চালান, এটি "কমান্ড সফলভাবে কার্যকর" এবং প্রিন্ট করবে ERRORLEVEL == 0। কীটি ইতিমধ্যে বিদ্যমান তাই এটি রেজিস্ট্রিতে কোনও প্রভাব ফেলবে না। এটি সম্ভবত দ্রুততম উপায় এবং the আরইজি সেখানে দীর্ঘ সময়ের জন্য রয়েছে।

* এটি প্রাক এনটি (উইন 9 এক্স) এ উপলব্ধ নয়।

* এক্সপি এবং পরে কাজ করে


কাজের উদাহরণ

একটি স্ক্রিপ্ট যা অস্থায়ী ফোল্ডার সাফ করে


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

8

ব্যাচ স্ক্রিপ্টে এলিভেট.কমড ( এই লিঙ্কটি দেখুন ), যা আমি অ্যাডমিনের অধিকার পাওয়ার জন্য লিখেছি , আমি নিম্নলিখিত পদ্ধতিতে এটি করেছি:

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

এটি উইন্ডোজ 7, ​​8, 8.1, 10 এবং এমনকি উইন্ডোজ এক্সপি এর জন্য পরীক্ষা করা হয় এবং কোনও বিশেষ ডিরেক্টরি, ফাইল বা রেজিস্ট্রি কী এর মতো কোনও সংস্থার প্রয়োজন হয় না।


6

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

@echo off

REM  Calling verify with no args just checks the verify flag,
REM   we use this for its side effect of setting errorlevel to zero
verify >nul

REM  Attempt to read a particular system directory - the DIR
REM   command will fail with a nonzero errorlevel if the directory is
REM   unreadable by the current process.  The DACL on the
REM   c:\windows\system32\config\systemprofile directory, by default,
REM   only permits SYSTEM and Administrators.
dir %windir%\system32\config\systemprofile >nul 2>nul

REM  Use IF ERRORLEVEL or %errorlevel% to check the result
if not errorlevel 1 echo has Admin privs
if     errorlevel 1 echo has only User privs

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


1
অনুলিপিটি নির্দেশ করেছেন যে এটি বিশ্বাসযোগ্য নয়। আপনি যদি একটি এক্সপ্লোরার উইন্ডোতে% উইন্ডির% \ system32 \ কনফিগারেশন \ সিস্টেমম্প্রোফিলিতে যান এবং ইউএসি-র সাথে অনুমোদনা করেন তবে সিএমডি উইন্ডোটি সফলভাবে বিষয়বস্তুগুলি সন্ধান করতে পারে। আপনি যখন করবেন না তখন আপনার উচ্চতা আছে তা ভেবে আপনাকে নেতৃত্ব দেয়।
টাইলার জাজো

5

নিম্নলিখিতগুলি উইন্ডোজ ডিরেক্টরিতে একটি ফাইল তৈরি করার চেষ্টা করে। এটি সাফল্য পেলে এটি সরিয়ে ফেলবে।

copy /b/y NUL %WINDIR%\06CF2EB6-94E6-4a60-91D8-AB945AE8CF38 >NUL 2>&1
if errorlevel 1 goto:nonadmin
del %WINDIR%\06CF2EB6-94E6-4a60-91D8-AB945AE8CF38 >NUL 2>&1
:admin
rem here you are administrator
goto:eof
:nonadmin
rem here you are not administrator
goto:eof

মনে রাখবেন যে 06CF2EB6-94E6a4a60-91D8-AB945AE8CF38 একটি জিইউইডি যা আজ তৈরি হয়েছিল এবং এটি বিদ্যমান ফাইলের নামের সাথে দ্বন্দ্বের পক্ষে অসম্ভব বলে মনে করা হচ্ছে।


+1 কারণ স্বীকৃত উত্তরটির ফলে যখন আমার অ্যাপ্লিকেশন থেকে স্ক্রিপ্টটি কল করা হয়েছিল তখন অনেকগুলি কমান্ড উইন্ডো খোলা থাকে।
বোলেলাও

was generated today and it is assumed to be improbable to conflict with an existing filename.যদি দুটি লোক এই কোডটি ব্যবহার করে তবে
ভিটিম.ইস

4

হোয়ামি / গোষ্ঠীগুলি একটি ক্ষেত্রে কাজ করে না। যদি আপনি সম্পূর্ণরূপে ইউএসি বন্ধ করে রেখেছেন (কেবলমাত্র বিজ্ঞপ্তি বন্ধ করা হয়নি), এবং আপনি প্রশাসকের প্রম্পট থেকে শুরু করেছেন তবে জারি করা হয়েছে:

runas /trustlevel:0x20000 cmd

আপনি অ-উন্নত চলমান হবে তবে জারি করছেন:

whoami /groups

বলবে আপনি উন্নত এটা ভুল. এখানে কেন এটি ভুল:

এই অবস্থায় চলাকালীন, যদি ইসুসারএডমিন ( https://msdn.microsoft.com/en-us/library/windows/desktop/aa376389(v=vs.85).aspx ) ফেরৎ দেয় এবং ইউএসি সম্পূর্ণরূপে অক্ষম থাকে, এবং গেটটোকেন তথ্য টোকেনএলিউশনটাইপডাইফল্ট ( http://blogs.msdn.com/b/cjacks/archive/2006/10/24/modifying-the-mandtory-integrity-level-for-a-secured-object-in-windows-vista.aspx ) তাহলে প্রক্রিয়াটি উচ্চতর চলমান নয় , তবে whoami /groupsদাবি এটি claims

সত্যিই, ব্যাচ ফাইল থেকে এটি করার সর্বোত্তম উপায় হ'ল:

net session >nul 2>nul
net session >nul 2>nul
echo %errorlevel%

আপনার net sessionদু'বার করা উচিত কারণ যদি কেউ atআগে থেকে কাজ করে তবে আপনি ভুল তথ্য পাবেন।


whoami /groupsভুল তথ্য সরবরাহ করছে না। এটি কেবল runas /trustlevelআপনাকে অপ্রত্যাশিত জায়গায় ফেলেছে: প্রশাসকের অধিকার ছাড়াই চলমান তবে উচ্চ সততা স্তরের সাথে with প্রক্রিয়া এক্সপ্লোরার দিয়ে আপনি এটি নিশ্চিত করতে পারেন। (এটি কোনও বাগ হতে পারে তবে কোনও বাগ ইন runasনয় whoami))
হ্যারি জনস্টন

হ্যারি, আমি শুনছি আপনি কি বলছেন, তবে আপনি কি এই বিষয়ে বিস্তারিত বলতে পারবেন? আপনি runas /trustlevel যখন স্থানীয় প্রশাসক হন এবং ইউএসি অক্ষম থাকে তখন এ বিষয়ে মন্তব্যটি আমি বুঝতে পারি না , প্রশাসক প্রম্পট থেকে রানাস কমান্ড জারি করা আপনাকে একটি "বেসিক ব্যবহারকারী" সুরক্ষা প্রসঙ্গে পরিণত করবে। এই মোডে থাকা অবস্থায় আপনি প্রশাসক ক্রিয়াকলাপ সম্পাদন করতে পারবেন না। "নেট সেশন", বা fsutil "বা অন্য কোনও ইউটিলিটি চেষ্টা করে যার জন্য প্রশাসকের অ্যাক্সেস প্রয়োজন। তবে," হোয়ামি / গোষ্ঠী "আপনাকে বলছে আপনি উন্নত।
জুমালাইফগার্ড

আমি নিশ্চিত নই যে "হোয়ামি / গোষ্ঠীগুলি আপনাকে বলছে আপনি উন্নত হয়েছেন" বলতে আপনি কী বোঝাতে চেয়েছেন তা আমি বুঝতে পেরেছি; এটি আক্ষরিকভাবে "আপনি উন্নত" স্ট্রিং আউটপুট দেয় না, তাই না? হোয়ামি / গ্রুপগুলির আউটপুটটির কোন অংশটি আপনি দেখছেন?
হ্যারি জনস্টন

হ্যারি, আমি দেখছি আমি পরিষ্কার ছিল না। প্রথম ব্যাকগ্রাউন্ড, সুতরাং আপনি এবং আমি একই পৃষ্ঠায় আছি। কমান্ড প্রম্পট বর্তমানে এমন অবস্থায় চলছে যেখানে প্রশাসকের অ্যাক্সেস রয়েছে তা নির্ধারণে লোকেদের কয়েকটি মুখ্য কৌশলগুলি ব্যবহার করে। সাধারণ কৌশলগুলি হ'ল বিল্ড কমান্ড যেমন fsutil, at, whoami এবং "নেট সেশন" ব্যবহার করে। "এট" ব্যবহার করে হ্রাস করা হয়। আপনি যদি এই পৃষ্ঠাটি অনুসন্ধান করেন, আপনি fsutil, whoami এবং "নেট সেশন" ব্যবহার করে উদাহরণগুলি দেখতে পাবেন। এখান থেকে whoami আরো উদাহরণ জন্য দেখুন: stackoverflow.com/questions/7985755/...
zumalifeguard

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

2
whoami /groups | find "S-1-16-12288" > nul
if not errorlevel 1 (
  echo ...  connected as admin
)

2
এখানে সমস্যা হ'ল ব্যবহারকারীর প্রশাসনের অধিকার আছে কিনা তা আপনি পরীক্ষা করে দেখুন। তবে ব্যাচের স্ক্রিপ্ট অ্যাডমিনের অধিকার ছাড়াই চলতে পারে।
টানাশিয়াস

2
whoamiউইন্ডোজ এক্সপিতে প্লাস সমর্থিত নয়।
মিথ্যোচেলন

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

2

কিছু সার্ভার পরিষেবাগুলি নিষ্ক্রিয় করে যা "নেট সেশন" কমান্ডের প্রয়োজন হয়। অ্যাডমিন চেক করার ফলে এই ফলাফলটি সর্বদা বলে যে আপনার যখন থাকতে পারে তখন প্রশাসকের অধিকার নেই don't


2

সম্পাদনা: অনুলিপিটি নির্দেশ করেছেন যে এটি বিশ্বাসযোগ্য নয়। ইউএসি-এর সাথে পঠনের অ্যাক্সেস অনুমোদনের ফলে dir সফল হতে পারে। আরেকটি সম্ভাবনা দেওয়ার জন্য আমার কাছে আরও কিছু স্ক্রিপ্ট রয়েছে তবে এটি কেবল পঠনযোগ্য নয়।

reg query "HKLM\SOFTWARE\Foo" >NUL 2>NUL && goto :error_key_exists
reg add "HKLM\SOFTWARE\Foo" /f >NUL 2>NUL || goto :error_not_admin
reg delete "HKLM\SOFTWARE\Foo" /f >NUL 2>NUL || goto :error_failed_delete
goto :success

:error_failed_delete
  echo Error unable to delete test key
  exit /b 3
:error_key_exists
  echo Error test key exists
  exit /b 2
:error_not_admin
  echo Not admin
  exit /b 1
:success
  echo Am admin

নীচে পুরানো উত্তর

সতর্কতা: অবিশ্বস্ত


এখানে বেশ কয়েকটি অন্যান্য উত্তরের উপর ভিত্তি করে এবং and14315 দ্বারা উত্থাপিত পয়েন্টগুলির ভিত্তিতে আমি দেখতে পেয়েছি যে আমি নিম্নলিখিতগুলির একটি অনুরাগী:

dir "%SystemRoot%\System32\config\DRIVERS" 2>nul >nul || echo Not Admin

কয়েকটি নির্ভরতা এবং দ্রুত।


1
এই সমাধানটি আমার পক্ষে কাজ করত তবে যেহেতু আমি অবস্থানটিতে ব্রাউজ করেছি এবং যে ফোল্ডারে আপনার জন্য উন্নত সুবিধাগুলির প্রয়োজন রয়েছে অ্যাক্সেস করেছি, স্ট্যান্ডার্ড ব্যবহারকারী হিসাবে স্ক্রিপ্টটি চালানো সত্ত্বেও ERRORLEVEL / প্রস্থান কোডটি এখন সর্বদা 0 হয় is
স্ক্রিপ্ট'অনকোড

1

দ্রষ্টব্য: 32 system32 \ কনফিগারেশন \ সিস্টেমের জন্য ক্যাক্সের সাথে চেক করা WW64 এ সর্বদা ব্যর্থ হবে (উদাহরণস্বরূপ% systemroot% \ syswow64 \ cmd.exe / 32 বিট মোট কমান্ডার থেকে) সুতরাং 64 বিট সিস্টেমে 32 বিট শেলের মধ্যে স্ক্রিপ্টগুলি চিরতরে লুপ হয়ে যাবে ... প্রিফেচ ডিরেক্টরিতে অধিকারের জন্য আরও ভাল পরীক্ষা করা হবে:

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\Prefetch\"

উইন এক্সপি থেকে 7 টি পরীক্ষিত, তবে এটি উইন্ডো 7 ইনস্টল হিসাবে উইনপেইতে ব্যর্থ হয়েছে im

উইনপেই এবং ওও 64৪-এ ওপেন ফাইলগুলি পরীক্ষা করে ব্যর্থ হয় ails

OPENFILES > nul

উইন্ডোজ In-তে এটি "1" দিয়ে এমন তথ্য দিয়ে ভুল হবে যে "টার্গেট সিস্টেমটি 32 বিট অপারেটিং সিস্টেম হওয়া দরকার"

উভয় চেক সম্ভবত পুনরুদ্ধার কনসোলে ব্যর্থ হবে।

উইন্ডোজ এক্সপি - 8 32/64 বিট, ডাব্লুডব্লিউ 64 এবং উইনপেইতে কী কাজ করে তা হ'ল: ডিয়ার ক্রিয়েশন টেস্ট (যদি প্রশাসক সবার জন্য অনুমতি নিয়ে উইন্ডোজ ডিরেক্টরিতে কার্পেট বোমা না দেয় ...) এবং

net session

এবং

reg add HKLM /F

চেক।

কিছু উইন্ডোজ এক্সপি-তে আরও একটি নোট (এবং অন্যান্য সংস্করণ সম্ভবত অ্যাডমিনের টিঙ্কারিংয়ের উপর নির্ভর করে) .vbs স্ক্রিপ্ট থেকে সরাসরি ব্যাট / সেন্টিমিডি কল করার রেজিস্ট্রি এন্ট্রিগুলির উপর নির্ভর করে যে ব্যাট / সেমিডি ফাইলগুলি কোনও কিছুর সাথে সম্পর্কিত নয় এমন তথ্যের সাথে ব্যর্থ হবে ...

echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
cscript "%temp%\getadmin.vbs" //nologo

অন্যদিকে ব্যাট / সেন্টিমিডি ফাইলের প্যারামিটারের সাথে cmd.exe কল করা ঠিক আছে:

echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "cmd.exe", "/C %~s0", "", "runas", 1 >> "%temp%\getadmin.vbs"
cscript "%temp%\getadmin.vbs" //nologo

1

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

পুরো প্রশাসকের অধিকার নিয়ে প্রোগ্রামটি চলছে কিনা তা সনাক্ত করার উপর ভিত্তি করে নিম্নলিখিত সি কোডটি Win2k + 1 এ কাজ করে , যে কোনও জায়গায় এবং সমস্ত ক্ষেত্রে (ইউএসি, ডোমেনস, ট্রানজিটিভ গ্রুপগুলি ...) কাজ করে - কারণ এটি যখন সিস্টেম নিজেই একই কাজ করে অনুমতি চেক। এটি উভয় ফলাফলের সংকেত একটি বার্তা (যা একটি স্যুইচ দিয়ে নিঃশব্দ করা যেতে পারে) এবং প্রস্থান কোড সহ করে।

এটি কেবল একবার সংকলন করা দরকার, তারপরে আপনি কেবল .exeসর্বত্রই অনুলিপি করতে পারবেন - এটি কেবলমাত্র তার উপর নির্ভর করে kernel32.dllএবং advapi32.dll(আমি একটি অনুলিপি আপলোড করেছি )।

chkadmin.c:

#include <malloc.h>
#include <stdio.h>
#include <windows.h>
#pragma comment (lib,"Advapi32.lib")

int main(int argc, char** argv) {
    BOOL quiet = FALSE;
    DWORD cbSid = SECURITY_MAX_SID_SIZE;
    PSID pSid = _alloca(cbSid);
    BOOL isAdmin;

    if (argc > 1) {
        if (!strcmp(argv[1],"/q")) quiet=TRUE;
        else if (!strcmp(argv[1],"/?")) {fprintf(stderr,"Usage: %s [/q]\n",argv[0]);return 0;}
    }

    if (!CreateWellKnownSid(WinBuiltinAdministratorsSid,NULL,pSid,&cbSid)) {
        fprintf(stderr,"CreateWellKnownSid: error %d\n",GetLastError());exit(-1);}

    if (!CheckTokenMembership(NULL,pSid,&isAdmin)) {
        fprintf(stderr,"CheckTokenMembership: error %d\n",GetLastError());exit(-1);}

    if (!quiet) puts(isAdmin ? "Admin" : "Non-admin");
    return !isAdmin;
}

1 এমএসডিএন দাবি করে যে এপিআইগুলি এক্সপি + তবে এটি মিথ্যা। CheckTokenMembership 2 কে + এবং অন্যটি এর চেয়েও বেশি বয়স্ক । শেষ লিঙ্কটিতে আরও জটিল পদ্ধতি রয়েছে যা এনটি-তেও কাজ করবে।


1

পাওয়ারশেল কেউ?

param (
    [string]$Role = "Administrators"
)

#check for local role

$identity  = New-Object Security.Principal.WindowsIdentity($env:UserName)
$principal = New-Object Security.Principal.WindowsPrincipal($identity)

Write-Host "IsInRole('$Role'): " $principal.IsInRole($Role)

#enumerate AD roles and lookup

$groups = $identity::GetCurrent().Groups
foreach ($group in $groups) {
    $trans = $group.Translate([Security.Principal.NTAccount]);
    if ($trans.Value -eq $Role) {
       Write-Host "User is in '$Role' role"
    }
}

1

তালিকায় যোগ করার জন্য এখানে আরও একটি রয়েছে ;-)

(সিস্টেমের স্থানে একটি ফাইল তৈরির চেষ্টা করুন)

CD.>"%SystemRoot%\System32\Drivers\etc\_"
MODE CON COLS=80 LINES=25

IF EXIST "%SystemRoot%\System32\Drivers\etc\_" (

  DEL "%SystemRoot%\System32\Drivers\etc\_"

  ECHO Has Admin privileges

) ELSE (

  ECHO No Admin privileges

)

MODE CONপর্দা reinitializes এবং কোন টেক্সট / ত্রুটি surpresses যখন সিস্টেম অবস্থান লেখার অনুমতি না।


0

বিকল্প: একটি বহিরাগত ইউটিলিটি ব্যবহার করুন যা এই উদ্দেশ্যে ডিজাইন করা হয়েছে, যেমন, ইসএডমিন.এক্সি (সীমাহীন ফ্রিওয়্যার)।

প্রস্থান কোডগুলি:

0 - বর্তমান ব্যবহারকারী প্রশাসক গোষ্ঠীর সদস্য নয়

1 - প্রশাসক এবং চলমান উন্নত ব্যবহারকারীদের বর্তমান সদস্য

2 - প্রশাসকের বর্তমান ব্যবহারকারীর সদস্য, তবে চালিত নয়


0
@echo off
ver
set ADMDIR=C:\Users\Administrator
dir %ADMDIR% 1>nul 2>&1
echo [%errorlevel%] %ADMDIR%
if "%errorlevel%"=="0" goto main
:: further checks e.g. try to list the contents of admin folders
:: wherever they are stored on older versions of Windows
echo You need administrator privileges to run this script: %0
echo Exiting...
exit /b

:main
echo Executing with Administrator privileges...

0
@echo off
:start
set randname=%random%%random%%random%%random%%random%
md \windows\%randname% 2>nul
if %errorlevel%==0 (echo You're elevated!!!
goto end)
if %errorlevel%==1 (echo You're not elevated :(:(
goto end)
goto start
:end
rd \windows\%randname% 2>nul
pause >nul

আমি লাইন দিয়ে কোড লাইনটি ব্যাখ্যা করব:

@echo off

এটি ছাড়াই ব্যবহারকারীরা 1 টিরও বেশি লাইন নিয়ে বিরক্ত হবেন।

:start

প্রোগ্রাম শুরু হয় যেখানে পয়েন্ট।

set randname=%random%%random%%random%%random%%random%

ডিরেক্টরিটি তৈরি করতে ফাইলের নাম সেট করুন।

md \windows\%randname% 2>nul

ডিরেক্টরিটি তৈরি করে <DL>:\Windows(<DL> ড্রাইভ চিঠির সাথে প্রতিস্থাপন করুন)।

if %errorlevel%==0 (echo You're elevated!!!
goto end)

যদি ERRORLEVEL এনভায়রনমেন্ট ভেরিয়েবল শূন্য হয়, তবে সাফল্যের বার্তা প্রতিধ্বনিত করুন।
শেষের দিকে যান (আরও এগিয়ে যান না)।

if %errorlevel%==1 (echo You're not elevated :(:(
goto end)

যদি ERRORLEVEL এক হয় তবে প্রতিধ্বনির ব্যর্থতা বার্তাটি শেষ হয়ে যাবে।

goto start

ফাইলের নামটি ইতিমধ্যে বিদ্যমান থাকলে ফোল্ডারটি পুনরায় তৈরি করুন (অন্যথায় goto endকমান্ডটি এটি চালাতে দেবে না)।

:end

শেষের পয়েন্টটি নির্দিষ্ট করুন

rd \windows\%randname% 2>nul

তৈরি ডিরেক্টরিটি সরান।

pause >nul

বিরতি দিন যাতে ব্যবহারকারী বার্তাটি দেখতে পারে।

দ্রষ্টব্য : >nulএবং 2>nulএই কমান্ডগুলির আউটপুট ফিল্টার করছে।


হ্যাঁ আমি জানি যে আপনি যখন প্রশাসক ব্যবহারকারী হিসাবে প্রবেশ করেন (অ্যাডমিন অ্যাকাউন্টের ধরণের কোনও ব্যবহারকারী নয়) আপনি সর্বদা উন্নত হন তবে এটি কোনও বাগ নয়!
ইকনস

0

net user %username% >nul 2>&1 && echo admin || echo not admin


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

না, এটি দেখায় যে বর্তমানের সেন্টিমিডি.এক্সইর ব্যবহারকারীর ডাটাবেসে প্রশাসনিক অ্যাক্সেস রয়েছে কি না, সুতরাং "নেট সেশন" না করলে এটি এমনকি কাজ করে। বিকল্পভাবে, "নেট কনফিগারেশন> নুল 2> & 1 && ইকো অ্যাডমিন || ইকো নয় প্রশাসক" কাজটি করে। উভয় নির্মাণই উইন্ডোজ এক্সপি-তে অতিথি, পাওয়ার ব্যবহারকারী এবং প্রশাসনিক অ্যাকাউন্টের অধীনে ল্যানম্যান সার্ভারের সাথে সফলভাবে পরীক্ষিত হয়েছিল (অতিথি এবং পাওয়ার ব্যবহারকারীর অধীনে সেমিডি.এক্স.এর জন্য ত্রুটিযুক্ত 2, অ্যাডমিন অধিকারের অধীনে সেমিডি.এক্স.এর জন্য ত্রুটিযুক্ত 0)। এটি কি ভিস্টায় এবং পরে উপরে উল্লিখিত ইউএসি সমস্যাগুলি নিয়ে কাজ করবে - আমি জানি না, তাই কেউ যদি এটি পরীক্ষা করতে পারে তবে ভাল হবে।
বিদ্বেষপূর্ণ

2
আমি দুটি সেমিডি উইন্ডোজ (উইন 7 এক্স 64) দিয়ে পরীক্ষা করেছি, অ্যাডমিনের অধিকারগুলি দিয়ে বা ছাড়াই শুরু করেছি। উভয় ক্ষেত্রেই এটি দেখায়admin
jeb

0

আমি মনে করি সহজতম পদ্ধতিটি সিস্টেমের তারিখটি পরিবর্তনের চেষ্টা করছে (এর জন্য প্রশাসকের অধিকার প্রয়োজন):

date %date%
if errorlevel 1 (
   echo You have NOT admin rights
) else (
   echo You have admin rights
)

যদি %date%চলকটিতে সপ্তাহের দিন অন্তর্ভুক্ত থাকে তবে DATEকমান্ডের শেষ অংশ থেকে কেবল তারিখটি পান :

for /F "delims=" %%a in ('date ^<NUL') do set "today=%%a" & goto break
:break
for %%a in (%today%) do set "today=%%a"
date %today%
if errorlevel 1 ...

3
সহায়তা করতে পারে না তবে এই জাতীয় ধ্বংসাত্মক "পরামর্শ" কে কমিয়ে দেয়।
ivan_pozdeev

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

2
@ আইভান_পোজদেদেভ: সম্ভবত আপনি "সফটওয়্যারের অদ্ভুত প্রভাব" এর মধ্যে একটির বর্ণনা দিতে পারেন যা
সেমিডি.এক্স.এক্স

1
এছাড়াও superuser.com
জিজ্ঞাসা

@ আইভান_পোজডিদেভ: আপনার লিঙ্কগুলির কোনওটিও আমার পদ্ধতির সাথে দূরবর্তীভাবে সম্পর্কিত নয়। আমি মনে করি আপনি আমার সমাধানটি ভুল বুঝেছেন। এই পদ্ধতি শুধুমাত্র দুটি সম্ভাব্য ফলাফল এক হতে পারে: কিছুই পরিবর্তিত হয় (যদি ব্যবহারকারীর কোন অ্যাডমিন অধিকার আছে), অথবা DATE তারিখে পরিবর্তিত হয় একই মান (যদি ব্যবহারকারী অ্যাডমিন অধিকার আছে)। আমার পদ্ধতিটি সময় পরিবর্তন করে না ! আমি আপনাকে আমার উত্তরটি পুনরায় :(
পড়তে

0

আমি ব্যবহার করতে পারি এমন একটি ব্যবহারকারী পেয়েছি net session তারা প্রশাসক না হলেও । আমি কেন তদন্ত করিনি। ব্যবহারকারী যদি উইন্ডো ফোল্ডারে কোনও ফোল্ডার তৈরি করতে পারে তবে তা পরীক্ষা করতে হবে work

আমার কোডটি এখানে:

::::::: :testadmin function START :::::::
:: this function tests if current user is admin.  results are returned as "true" or "false" in %isadmin%
:: Test "%isadmin" after calling this function
:: Usage: "call :testadmin"
echo Your script entered the :testadmin function by error.  Usage: "call :testadmin"
pause
exit /b
:testadmin

 rd %windir%\local_admin_test > nul 2> nul
 md %windir%\local_admin_test > nul 2> nul
 if [%errorlevel%]==[0] set isadmin=true
 if not [%errorlevel%]==[0] set isadmin=false
 rd %windir%\local_admin_test > nul 2> nul

 if [%isadmin%]==[true] (
   echo User IS admin.
 )
 if not [%isadmin%]==[true] (
   echo User IS NOT admin.
   timeout 30
   :: or use "pause" instead of "timeout"
   exit /b
 )
exit /b
:::::: :testadmin function END ::::::

0

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

আমি ব্যাচটিকে 'প্রস্থান-যদি-না-অ্যাডমিন.cmd' বলেছি যা প্রয়োজনীয় প্রশাসকের অধিকার না দেওয়া হলে তারা মৃত্যুদণ্ড কার্যকর না করে তা নিশ্চিত করার জন্য অন্যান্য ব্যাচ থেকে কল করা যেতে পারে।

rem Sun May 03, 2020

rem Methods for XP+ used herein based on:
rem /programming/4051883/batch-script-how-to-check-for-admin-rights
goto method1

:method1
setlocal enabledelayedexpansion
set "dv==::"
if defined !dv! goto notadmin
goto admin

:method2
call fsutil dirty query %SystemDrive% >nul
if %ERRORLEVEL%==0 goto admin
goto notadmin

:method3
net session >nul 2>&1
if %ERRORLEVEL%==0 goto admin
goto notadmin

:method4
fltmc >nul 2>&1 && goto admin
goto notadmin

:admin
echo Administrator rights detected
goto end

:notadmin
echo ERROR: This batch must be run with Administrator privileges
pause
exit /b
goto end

:end```

-1

এখানে আমার 2-পেনিগুলি মূল্যবান:

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

একটি এডি ব্যবহারকারীর সাথে সংযুক্ত লগইন স্ক্রিপ্টের আগে একটি ডোমেন জিপিও সেট প্রয়োগ করা হয় জিপিও লগইন স্ক্রিপ্ট তৈরি করা খুব পরিপক্ক ছিল কারণ ব্যবহারকারীদের "নতুন" প্রোফাইল তৈরি / লোড / তৈরি করা হয়নি বা "অপসারণ এবং / বা প্রয়োগ করার জন্য সময় মতো প্রস্তুত ছিল না পিন "টাস্কবার এবং স্টার্ট মেনু আইটেমগুলি vbscript + কিছু স্থানীয় ফাইল যুক্ত করুন।

উদাহরণস্বরূপ: প্রস্তাবিত 'ডিফল্ট-ব্যবহারকারী' প্রোফাইল পরিবেশের জন্য "% URLData% \ মাইক্রোসফ্ট \ উইন্ডোজ ata স্টার্ট মেনু \ প্রোগ্রামগুলি * MyNewOWA.url *", এবং "সি:" এর মধ্যে রাখা "। URL" (.lnk) শর্টকাট দরকার: অন্যান্য আইটেমগুলির মধ্যে \ ব্যবহারকারী \ সর্বজনীন \ ডেস্কটপ \ * MyNewOWA.url * "অবস্থানগুলি

ব্যবহারকারীদের ডোমেনে একাধিক মেশিন রয়েছে, যেখানে কেবলমাত্র এই সেট 'ওয়ার্করুম' পিসিগুলিতে এই নীতিগুলি দরকার require

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

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

    :: ------------------------------------------------------------------------
    :: You have a royalty-free right to use, modify, reproduce and distribute
    :: the Sample Application Files (and/or any modified version) in any way
    :: you find useful, provided that you agree that the author provides
    :: no warranty, obligations or liability for any Sample Application Files.
    :: ------------------------------------------------------------------------

    :: ********************************************************************************
    ::* Sample batch script to demonstrate the usage of RunAs.cmd
    ::*
    ::* File:           RunAs.cmd
    ::* Date:           12/10/2013
    ::* Version:        1.0.2
    ::*
    ::* Main Function:  Verifies status of 'bespoke' Scripts ability to 'Run As - Admin'
    ::*                 elevated privileges and without UAC prompt
    ::*
    ::* Usage:          Run RunAs.cmd from desired location
    ::*         Bespoke.cmd will be created and called from C:\Utilities location
    ::*         Choose whether to delete the script after its run by removing out-comment
    ::*                 (::) before the 'Del /q Bespoke.cmd' command
    ::*
    ::* Distributed under a "GNU GPL" type basis.
    ::*
    ::* Revisions:
    ::* 1.0.0 - 08/10/2013 - Created.
    ::* 1.0.1 - 09/10/2013 - Include new path creation.
    ::* 1.0.2 - 12/10/2013 - Modify/shorten UAC disable process for Admins
    ::*
    ::* REFERENCES:
    ::* Sample "*.inf" secpol.msc export from Wins 8 x64 @ bottom, 
    ::* Would be default but for 'no password complexities'
    ::*
    ::* To recreate UAC default: 
    ::* Goto:Secpol, edit out Exit, modify .inf set, export as "Wins8x64.inf" 
    ::* and import using secedit cmd provided
    ::*
    :: ********************************************************************************

    @echo off & cls
    color 9F
    Title RUN AS
    Setlocal
    :: Verify local folder availability for script
    IF NOT EXIST C:\Utilities (
        mkdir C:\Utilities & GOTO:GenBatch
    ) ELSE (
        Goto:GenBatch
    )
    :GenBatch
    c:
    cd\
    cd C:\Utilities
    IF NOT EXIST C:\Utilities\Bespoke.cmd (
        GOTO:CreateBatch
    ) ELSE (
        Goto:RunBatch
    )
    :CreateBatch
    Echo. >Bespoke.cmd
    Echo :: ------------------------------------------------------------------------ >>Bespoke.cmd
    Echo :: You have a royalty-free right to use, modify, reproduce and distribute >>Bespoke.cmd
    Echo :: the Sample Application Files (and/or any modified version) in any way >>Bespoke.cmd
    Echo :: you find useful, provided that you agree that the author provides >>Bespoke.cmd
    Echo :: has no warranty, obligations or liability for any Sample Application Files. >>Bespoke.cmd
    Echo :: ------------------------------------------------------------------------ >>Bespoke.cmd
    Echo. >>Bespoke.cmd
    Echo :: ******************************************************************************** >>Bespoke.cmd
    Echo ::* Sample batch script to demonstrate the usage of Bespoke.cmd >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* File:           Bespoke.cmd >>Bespoke.cmd
    Echo ::* Date:           10/10/2013 >>Bespoke.cmd
    Echo ::* Version:        1.0.1 >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* Main Function:  Allows for running of Bespoke batch with elevated rights and no future UAC 'pop-up' >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* Usage:          Called and created by RunAs.cmd run from desired location >>Bespoke.cmd
    Echo ::*                 Found in the C:\Utilities folder >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* Distributed under a "GNU GPL" type basis. >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* Revisions: >>Bespoke.cmd
    Echo ::* 1.0.0 - 09/10/2013 - Created. >>Bespoke.cmd
    Echo ::* 1.0.1 - 10/10/2013 - Modified, added ability to temp disable UAC pop-up warning. >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* REFERENCES: >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* Exit code (%%^ErrorLevel%%) 0 - No errors have occurred, i.e. immediate previous command ran successfully >>Bespoke.cmd
    Echo ::* Exit code (%%^ErrorLevel%%) 1 - Errors occurred, i.e. immediate previous command ran Unsuccessfully >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* MS OS version check >>Bespoke.cmd
    Echo ::* http://msdn.microsoft.com/en-us/library/windows/desktop/ms724833%28v=vs.85%29.aspx >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* Copying to certain folders and running certain apps require elevated perms >>Bespoke.cmd
    Echo ::* Even with 'Run As ...' perms, UAC still pops up. >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* To run a script or application in the Windows Shell >>Bespoke.cmd
    Echo ::* http://ss64.com/vb/shellexecute.html >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo ::* Machines joined to a corporate Domain should have the UAC feature set from, and >>Bespoke.cmd
    Echo ::* pushed out from a DC GPO policy >>Bespoke.cmd
    Echo ::* e.g.: 'Computer Configuration - Policies - Windows Settings - Security Settings -  >>Bespoke.cmd
    Echo ::* Local Policies/Security Options - User Account Control -  >>Bespoke.cmd
    Echo ::* Policy: User Account Control: Behavior of the elevation prompt for administrators >>Bespoke.cmd
    Echo ::*         in Admin Approval Mode  Setting: Elevate without prompting >>Bespoke.cmd
    Echo ::* >>Bespoke.cmd
    Echo :: ******************************************************************************** >>Bespoke.cmd
    Echo.>>Bespoke.cmd
    Echo @Echo off ^& cls>>Bespoke.cmd
    Echo color 9F>>Bespoke.cmd
    Echo Title RUN AS ADMIN>>Bespoke.cmd
    Echo Setlocal>>Bespoke.cmd
    Echo.>>Bespoke.cmd
    Echo Set "_OSVer=">>Bespoke.cmd
    Echo Set "_OSVer=UAC">>Bespoke.cmd
    Echo VER ^| FINDSTR /IL "5." ^>NUL>>Bespoke.cmd
    Echo IF %%^ErrorLevel%%==0 SET "_OSVer=PreUAC">>Bespoke.cmd
    Echo IF %%^_OSVer%%==PreUAC Goto:XPAdmin>>Bespoke.cmd
    Echo.>>Bespoke.cmd
    Echo :: Check if machine part of a Domain or within a Workgroup environment >>Bespoke.cmd
    Echo Set "_DomainStat=">>Bespoke.cmd
    Echo Set "_DomainStat=%%USERDOMAIN%%">>Bespoke.cmd
    Echo If /i %%^_DomainStat%% EQU %%^computername%% (>>Bespoke.cmd
    Echo Goto:WorkgroupMember>>Bespoke.cmd
    Echo ) ELSE (>>Bespoke.cmd
    Echo Set "_DomainStat=DomMember" ^& Goto:DomainMember>>Bespoke.cmd
    Echo )>>Bespoke.cmd
    Echo.>>Bespoke.cmd
    Echo :WorkgroupMember>>Bespoke.cmd
    Echo :: Verify status of Secpol.msc 'ConsentPromptBehaviorAdmin' Reg key >>Bespoke.cmd
    Echo reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin ^| Find /i "0x0">>Bespoke.cmd
    Echo.>>Bespoke.cmd
    Echo If %%^ErrorLevel%%==0 (>>Bespoke.cmd
    Echo    Goto:BespokeBuild>>Bespoke.cmd
    Echo ) Else (>>Bespoke.cmd
    Echo    Goto:DisUAC>>Bespoke.cmd
    Echo )>>Bespoke.cmd
    Echo :DisUAC>>Bespoke.cmd
    Echo :XPAdmin>>Bespoke.cmd
    Echo :DomainMember>>Bespoke.cmd
    Echo :: Get ADMIN Privileges, Start batch again, modify UAC ConsentPromptBehaviorAdmin reg if needed >>Bespoke.cmd
    Echo ^>nul ^2^>^&1 ^"^%%^SYSTEMROOT%%\system32\cacls.exe^"^ ^"^%%^SYSTEMROOT%%\system32\config\system^">>Bespoke.cmd
    Echo.>>Bespoke.cmd
    Echo IF ^'^%%^Errorlevel%%^'^ NEQ '0' (>>Bespoke.cmd
    Echo    echo Set objShell = CreateObject^^("Shell.Application"^^) ^> ^"^%%^temp%%\getadmin.vbs^">>Bespoke.cmd
    Echo    echo objShell.ShellExecute ^"^%%~s0^"^, "", "", "runas", 1 ^>^> ^"^%%^temp%%\getadmin.vbs^">>Bespoke.cmd
    Echo    ^"^%%^temp%%\getadmin.vbs^">>Bespoke.cmd
    Echo    del ^"^%%^temp%%\getadmin.vbs^">>Bespoke.cmd
    Echo    exit /B>>Bespoke.cmd
    Echo ) else (>>Bespoke.cmd
    Echo    pushd ^"^%%^cd%%^">>Bespoke.cmd
    Echo    cd /d ^"^%%~dp0^">>Bespoke.cmd
    Echo    @echo off>>Bespoke.cmd
    Echo )>>Bespoke.cmd
    Echo.>>Bespoke.cmd
    Echo IF %%^_OSVer%%==PreUAC Goto:BespokeBuild>>Bespoke.cmd
    Echo IF %%^_DomainStat%%==DomMember Goto:BespokeBuild>>Bespoke.cmd
    Echo.>>Bespoke.cmd
    Echo reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f>>Bespoke.cmd
    Echo.>>Bespoke.cmd
    Echo :BespokeBuild>>Bespoke.cmd
    Echo :: Add your script requiring elevated perm and no UAC below: >>Bespoke.cmd
    Echo.>>Bespoke.cmd

    :: PROVIDE BRIEF EXPLINATION AS TO WHAT YOUR SCRIPT WILL ACHIEVE
    Echo ::

    :: ADD THE "PAUSE" BELOW ONLY IF YOU SET TO SEE RESULTS FROM YOUR SCRIPT
    Echo Pause>>Bespoke.cmd

    Echo Goto:EOF>>Bespoke.cmd
    Echo :EOF>>Bespoke.cmd
    Echo Exit>>Bespoke.cmd

    Timeout /T 1 /NOBREAK >Nul
    :RunBatch
    call "Bespoke.cmd"
    :: Del /F /Q "Bespoke.cmd"

    :Secpol
    :: Edit out the 'Exit (rem or ::) to run & import default wins 8 security policy provided below
    Exit

    :: Check if machine part of a Domain or within a Workgroup environment
    Set "_DomainStat="
    Set _DomainStat=%USERDOMAIN%
    If /i %_DomainStat% EQU %computername% (
        Goto:WorkgroupPC
    ) ELSE (
        Echo PC Member of a Domain, Security Policy determined by GPO
        Pause
        Goto:EOF
    )

    :WorkgroupPC

    reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin | Find /i "0x5"
    Echo.
    If %ErrorLevel%==0 (
        Echo Machine already set for UAC 'Prompt'
        Pause
        Goto:EOF
    ) else (
        Goto:EnableUAC
    )
    :EnableUAC
    IF NOT EXIST C:\Utilities\Wins8x64Def.inf (
        GOTO:CreateInf
    ) ELSE (
        Goto:RunInf
    )
    :CreateInf
    :: This will create the default '*.inf' file and import it into the 
    :: local security policy for the Wins 8 machine
    Echo [Unicode]>>Wins8x64Def.inf
    Echo Unicode=yes>>Wins8x64Def.inf
    Echo [System Access]>>Wins8x64Def.inf
    Echo MinimumPasswordAge = ^0>>Wins8x64Def.inf
    Echo MaximumPasswordAge = ^-1>>Wins8x64Def.inf
    Echo MinimumPasswordLength = ^0>>Wins8x64Def.inf
    Echo PasswordComplexity = ^0>>Wins8x64Def.inf
    Echo PasswordHistorySize = ^0>>Wins8x64Def.inf
    Echo LockoutBadCount = ^0>>Wins8x64Def.inf
    Echo RequireLogonToChangePassword = ^0>>Wins8x64Def.inf
    Echo ForceLogoffWhenHourExpire = ^0>>Wins8x64Def.inf
    Echo NewAdministratorName = ^"^Administrator^">>Wins8x64Def.inf
    Echo NewGuestName = ^"^Guest^">>Wins8x64Def.inf
    Echo ClearTextPassword = ^0>>Wins8x64Def.inf
    Echo LSAAnonymousNameLookup = ^0>>Wins8x64Def.inf
    Echo EnableAdminAccount = ^0>>Wins8x64Def.inf
    Echo EnableGuestAccount = ^0>>Wins8x64Def.inf
    Echo [Event Audit]>>Wins8x64Def.inf
    Echo AuditSystemEvents = ^0>>Wins8x64Def.inf
    Echo AuditLogonEvents = ^0>>Wins8x64Def.inf
    Echo AuditObjectAccess = ^0>>Wins8x64Def.inf
    Echo AuditPrivilegeUse = ^0>>Wins8x64Def.inf
    Echo AuditPolicyChange = ^0>>Wins8x64Def.inf
    Echo AuditAccountManage = ^0>>Wins8x64Def.inf
    Echo AuditProcessTracking = ^0>>Wins8x64Def.inf
    Echo AuditDSAccess = ^0>>Wins8x64Def.inf
    Echo AuditAccountLogon = ^0>>Wins8x64Def.inf
    Echo [Registry Values]>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Setup\RecoveryConsole\SecurityLevel=4,^0>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Setup\RecoveryConsole\SetCommand=4,^0>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\CachedLogonsCount=1,"10">>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ForceUnlockLogon=4,^0>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\PasswordExpiryWarning=4,5>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ScRemoveOption=1,"0">>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ConsentPromptBehaviorAdmin=4,5>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ConsentPromptBehaviorUser=4,3>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableCAD=4,1>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\DontDisplayLastUserName=4,^0>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableInstallerDetection=4,1>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA=4,1>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableSecureUIAPaths=4,1>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableUIADesktopToggle=4,^0>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableVirtualization=4,1>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\FilterAdministratorToken=4,^0>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\LegalNoticeCaption=1,"">>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\LegalNoticeText=7,>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\PromptOnSecureDesktop=4,1>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ScForceOption=4,^0>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ShutdownWithoutLogon=4,1>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\UndockWithoutLogon=4,1>>Wins8x64Def.inf
    Echo MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ValidateAdminCodeSignatures=4,^0>>Wins8x64Def.inf
    Echo MACHINE\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers\AuthenticodeEnabled=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\AuditBaseObjects=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\CrashOnAuditFail=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\DisableDomainCreds=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\EveryoneIncludesAnonymous=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy\Enabled=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\ForceGuest=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\FullPrivilegeAuditing=3,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\LimitBlankPasswordUse=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\MSV1_0\NTLMMinClientSec=4,536870912>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\MSV1_0\NTLMMinServerSec=4,536870912>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\NoLMHash=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\RestrictAnonymous=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Print\Providers\LanMan Print Services\Servers\AddPrinterDrivers=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\SecurePipeServers\Winreg\AllowedExactPaths\Machine=7,System\CurrentControlSet\Control\ProductOptions,System\CurrentControlSet\Control\Server Applications,Software\Microsoft\Windows NT\CurrentVersion>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\SecurePipeServers\Winreg\AllowedPaths\Machine=7,System\CurrentControlSet\Control\Print\Printers,System\CurrentControlSet\Services\Eventlog,Software\Microsoft\OLAP Server,Software\Microsoft\Windows NT\CurrentVersion\Print,Software\Microsoft\Windows NT\CurrentVersion\Windows,System\CurrentControlSet\Control\ContentIndex,System\CurrentControlSet\Control\Terminal Server,System\CurrentControlSet\Control\Terminal Server\UserConfig,System\CurrentControlSet\Control\Terminal Server\DefaultUserConfiguration,Software\Microsoft\Windows NT\CurrentVersion\Perflib,System\CurrentControlSet\Services\SysmonLog>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Session Manager\Kernel\ObCaseInsensitive=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management\ClearPageFileAtShutdown=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Session Manager\ProtectionMode=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\optional=7,Posix>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\AutoDisconnect=4,15>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\EnableForcedLogOff=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\EnableSecuritySignature=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\NullSessionPipes=7,>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\RequireSecuritySignature=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\RestrictNullSessAccess=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\EnablePlainTextPassword=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\EnableSecuritySignature=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\RequireSecuritySignature=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\LDAP\LDAPClientIntegrity=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange=4,^0>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\MaximumPasswordAge=4,30>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\RequireSignOrSeal=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\RequireStrongKey=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\SealSecureChannel=4,1>>Wins8x64Def.inf
    Echo MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\SignSecureChannel=4,1>>Wins8x64Def.inf
    Echo [Privilege Rights]>>Wins8x64Def.inf
    Echo SeNetworkLogonRight = *S-1-1-0,*S-1-5-32-544,*S-1-5-32-545,*S-1-5-32-551>>Wins8x64Def.inf
    Echo SeBackupPrivilege = *S-1-5-32-544,*S-1-5-32-551>>Wins8x64Def.inf
    Echo SeChangeNotifyPrivilege = *S-1-1-0,*S-1-5-19,*S-1-5-20,*S-1-5-32-544,*S-1-5-32-545,*S-1-5-32-551,*S-1-5-90-^0>>Wins8x64Def.inf
    Echo SeSystemtimePrivilege = *S-1-5-19,*S-1-5-32-544>>Wins8x64Def.inf
    Echo SeCreatePagefilePrivilege = *S-1-5-32-544>>Wins8x64Def.inf
    Echo SeDebugPrivilege = *S-1-5-32-544>>Wins8x64Def.inf
    Echo SeRemoteShutdownPrivilege = *S-1-5-32-544>>Wins8x64Def.inf
    Echo SeAuditPrivilege = *S-1-5-19,*S-1-5-20>>Wins8x64Def.inf
    Echo SeIncreaseQuotaPrivilege = *S-1-5-19,*S-1-5-20,*S-1-5-32-544>>Wins8x64Def.inf
    Echo SeIncreaseBasePriorityPrivilege = *S-1-5-32-544>>Wins8x64Def.inf
    Echo SeLoadDriverPrivilege = *S-1-5-32-544>>Wins8x64Def.inf
    Echo SeBatchLogonRight = *S-1-5-32-544,*S-1-5-32-551,*S-1-5-32-559>>Wins8x64Def.inf
    Echo SeServiceLogonRight = *S-1-5-80-0,*S-1-5-83-^0>>Wins8x64Def.inf
    Echo SeInteractiveLogonRight = Guest,*S-1-5-32-544,*S-1-5-32-545,*S-1-5-32-551>>Wins8x64Def.inf
    Echo SeSecurityPrivilege = *S-1-5-32-544>>Wins8x64Def.inf
    Echo SeSystemEnvironmentPrivilege = *S-1-5-32-544>>Wins8x64Def.inf
    Echo SeProfileSingleProcessPrivilege = *S-1-5-32-544>>Wins8x64Def.inf
    Echo SeSystemProfilePrivilege = *S-1-5-32-544,*S-1-5-80-3139157870-2983391045-3678747466-658725712-1809340420>>Wins8x64Def.inf
    Echo SeAssignPrimaryTokenPrivilege = *S-1-5-19,*S-1-5-20>>Wins8x64Def.inf
    Echo SeRestorePrivilege = *S-1-5-32-544,*S-1-5-32-551>>Wins8x64Def.inf
    Echo SeShutdownPrivilege = *S-1-5-32-544,*S-1-5-32-545,*S-1-5-32-551>>Wins8x64Def.inf
    Echo SeTakeOwnershipPrivilege = *S-1-5-32-544>>Wins8x64Def.inf
    Echo SeDenyNetworkLogonRight = Guest>>Wins8x64Def.inf
    Echo SeDenyInteractiveLogonRight = Guest>>Wins8x64Def.inf
    Echo SeUndockPrivilege = *S-1-5-32-544,*S-1-5-32-545>>Wins8x64Def.inf
    Echo SeManageVolumePrivilege = *S-1-5-32-544>>Wins8x64Def.inf
    Echo SeRemoteInteractiveLogonRight = *S-1-5-32-544,*S-1-5-32-555>>Wins8x64Def.inf
    Echo SeImpersonatePrivilege = *S-1-5-19,*S-1-5-20,*S-1-5-32-544,*S-1-5-6>>Wins8x64Def.inf
    Echo SeCreateGlobalPrivilege = *S-1-5-19,*S-1-5-20,*S-1-5-32-544,*S-1-5-6>>Wins8x64Def.inf
    Echo SeIncreaseWorkingSetPrivilege = *S-1-5-32-545,*S-1-5-90-^0>>Wins8x64Def.inf
    Echo SeTimeZonePrivilege = *S-1-5-19,*S-1-5-32-544,*S-1-5-32-545>>Wins8x64Def.inf
    Echo SeCreateSymbolicLinkPrivilege = *S-1-5-32-544,*S-1-5-83-^0>>Wins8x64Def.inf
    Echo [Version]>>Wins8x64Def.inf
    Echo signature="$CHICAGO$">>Wins8x64Def.inf
    Echo Revision=1>>Wins8x64Def.inf

    :RunInf
    :: Import 'Wins8x64Def.inf' with ADMIN Privileges, to modify UAC ConsentPromptBehaviorAdmin reg
    >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%%\system32\config\system"
    IF '%Errorlevel%' NEQ '0' (
        echo Set objShell = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
        echo objShell.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
       "%temp%%\getadmin.vbs"
        del "%temp%\getadmin.vbs"
        exit /B
        Secedit /configure /db secedit.sdb /cfg C:\Utilities\Wins8x64Def.inf /overwrite
        Goto:CheckUAC
    ) else (
        Secedit /configure /db secedit.sdb /cfg C:\Utilities\Wins8x64Def.inf /overwrite
        @echo off
    )
    :CheckUAC
    reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin | Find /i "0x5"
    Echo.
    If %ErrorLevel%==0 (
        Echo ConsentPromptBehaviorAdmin set to 'Prompt'
        Pause
        Del /Q C:\Utilities\Wins8x64Def.inf
        Goto:EOF
    ) else (
        Echo ConsentPromptBehaviorAdmin NOT set to default
        Pause
    )
    ENDLOCAL
    :EOF
    Exit

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

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

কোনও 'ডোমেন পিসি'তে আপনার' ইতিমধ্যে তৈরি '"লক-ডাউন" নীতিমালার মধ্যে জিপিও "কনসেন্টপ্রোমটবিভাওয়্যারএডমিন" নীতি সেট করা উচিত - যেমন স্ক্রিপ্ট' রেফারেন্স 'বিভাগে বর্ণিত।

আবার, ডিফল্ট '.inf' ফাইলের secedit.exe আমদানি চালান যদি আপনি পুরো "টু ইউএসি বা না থেকে ইউএসি না" বিতর্কটি আটকে থাকেন :-)।

বিটিডব্লিউ: @ বোইলিউ আপনার ব্যর্থতা যাচাই করে দেখুন:

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

কমান্ড প্রম্পট থেকে কেবল "% SYSTEMROOT% \ system32 \ cacls.exe" বা "% SYSTEMROOT% \ system32 \ config \ system" বা উভয়ই চালিত করে - বোর্ডটি জুড়ে ফলাফলটি পরীক্ষা করে দেখুন।


-2

এটি করার আরেকটি উপায়।

REM    # # # #      CHECKING OR IS STARTED AS ADMINISTRATOR     # # # # #

FSUTIL | findstr /I "volume" > nul&if not errorlevel 1  goto Administrator_OK

cls
echo *******************************************************
echo ***    R U N    A S    A D M I N I S T R A T O R    ***
echo *******************************************************
echo.
echo.
echo Call up just as the Administrator. Abbreviation can be done to the script and set:
echo.
echo      Shortcut ^> Advanced ^> Run as Administrator
echo.
echo.
echo Alternatively, a single run "Run as Administrator"
echo or in the Schedule tasks with highest privileges
pause > nul
goto:eof
:Administrator_OK

REM Some next lines code ...

সেই লিঙ্কটি কী হওয়ার কথা? লিঙ্কটির কারণে স্প্যাম হিসাবে চিহ্নিত করা হয়েছে।
মিমগ্রস

কোনো কোড এই উত্তরটি পরীক্ষা করে দেখুন যে চেক এবং অনুরোধ জানানো স্বয়ংক্রিয়ভাবে: stackoverflow.com/a/30590134/4932683
cyberponk
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.