.Bat ফাইলের মাধ্যমে ইউএসি উন্নীত করা হচ্ছে?


10

খুব সহজবোধ্য যেটির উত্তর খুঁজে পেতে আমার সমস্যা হচ্ছে।

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

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

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

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

উত্তর:


8

http://technet.microsoft.com/en-us/magazine/2007.06.utilityspotlight.aspx

সম্পাদনা: আপনি যদি গ্রাহককে চালনার জন্য একটি ফাইল দিচ্ছেন, তবে কেন উইনআরআর দিয়ে একটি স্ব-আহরণকারী আরআর তৈরি করবেন না এবং এসএফএক্স বিকল্পগুলিতে "প্রশাসক প্রয়োজন" পতাকাটি সেট করবেন না কেন? এটি আপনাকে কেবলমাত্র 1 টি ফাইলের সীমা থেকে মুক্তি দেয়, আপনার প্রয়োজনীয় সমস্ত সংস্থান থাকতে পারে।

বিকল্পভাবে আপনার প্রিয় এসএফএক্স সরঞ্জামটি ব্যবহার করে আপনার এসএফএক্স তৈরি করুন এবং উপরে উন্নত সরঞ্জামগুলি ব্যবহার করুন।


আমি এটি মনে রাখব, কিন্তু, আবার চেষ্টা করছি, অতিরিক্ত কিছু ইনস্টল করা এড়ানোর চেষ্টা করছি কারণ এই মেশিনগুলি তৃতীয় পক্ষের অন্তর্ভুক্ত।
jslaker

আমি বিশ্বাস করি আপনি এগুলি ইনস্টল না করে এগুলি ব্যবহার করতে পারেন, কেবল আপনার ব্যাচের ফাইলের পাশে প্যাকেজ করুন।
ta.speot.is

ডাউনলোডে বেশ কয়েকটি ফাইল রয়েছে তবে দেখে মনে হচ্ছে আপনার প্রয়োজনীয়তার জন্য যা যা প্রয়োজন তা elevate.cmdelevate.vbs
হ'ল

আমি যদি এই সমস্ত কিছু মোটামুটি স্বতন্ত্র / পোর্টেবলের প্যাকেজ করতে পারি তবে এটি কার্যকর হতে পারে। আজ পরে যখন আমার আরও কিছুটা সময় লাগবে তখন আমি এটিকে ঘনিষ্ঠভাবে দেখব।
jslaker

যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
মার্ক হেন্ডারসন

4

আপনি যদি পাওয়ারশেলে রূপান্তর করতে প্রস্তুত হন তবে এটি করা খুব সহজ। এটি আমার " Elevate-Process.ps1" স্ক্রিপ্ট ( suআমার প্রোফাইলে ওরফে হিসাবে):

# Updated elevate function that does not need Elevate PowerToys
# From http://devhawk.net/2008/11/08/My+ElevateProcess+Script.aspx


$psi = new-object System.Diagnostics.ProcessStartInfo
$psi.Verb = "runas"

# If passed multiple commands, or one (that isn't a folder) then execute that command:
if (($args.Length -gt 1) -or (($args.length -eq 1) -and -not (test-path $args[0] -pathType Container))) {

    $file, [string]$arguments = $args;
    $psi.FileName = $file  
    $psi.Arguments = $arguments
    [System.Diagnostics.Process]::Start($psi) | out-null
    return
}

# If from console host, handle case of one argyment that is
# a folder, to start in that folder. Otherwise start in current folder.
if ($host.Name -eq 'ConsoleHost') {
    $psi.FileName = (Get-Command -name "PowerShell").Definition
    if ($args.length -eq 0) {
        $psi.Arguments = "-NoExit -Command &{set-location '" + (get-location).Path + "'}"
    } else {
        $psi.Arguments = "-NoExit -Command &{set-location '" + (resolve-path $args[0]) + "'}"
    }
    [System.Diagnostics.Process]::Start($psi) | out-null
    return
}

# Otherwise this is some other host (which cannot be assumed to take parameters).
# So simplely launch elevated.
$psi.FileName = [system.diagnostics.process]::getcurrentprocess().path
$psi.Arguments = ""
[System.Diagnostics.Process]::Start($psi) | out-null

উন্নতমানের সনাক্তকরণ পিএসএইচেও করা যেতে পারে (এইভাবে আপনি উন্নতির জন্য পরীক্ষা করতে পারেন, এবং তারপরে প্রয়োজনে উন্নত করতে পারেন):

$wid=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$prp=new-object System.Security.Principal.WindowsPrincipal($wid)
$adm=[System.Security.Principal.WindowsBuiltInRole]::Administrator
$IsAdmin=$prp.IsInRole($adm)
if ($IsAdmin) {
  $host.UI.RawUI.Foregroundcolor="Red"
  write-host "`n** Elevated Session **`n" -foreground $_errorColour -background $_errorBackound
}

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

@ জেএসলেকার: ভিস্তা / ২০০৮-এ অবশ্যই সমস্যা হতে পারে। তবে পিএসএইচটি উইন 7 / 2008আর 2 এর সাথে অন্তর্ভুক্ত করা হয়েছে যাতে এটি আরও সহজ হয়। কর্পোরেট পরিস্থিতিতে, রোল আউট করার জন্য এটি কি ড্রাইভ হতে পারে?
রিচার্ড

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

আপনি যদি পাওয়ারশেল ইনস্টল হচ্ছে তার উপর নির্ভর করতে না পারেন, আমি নীচে দেওয়া উত্তরটি দেখুন।
ম্যাট

3

আমি এখানে একটি উদাহরণ স্ক্রিপ্ট নিয়ে এসেছি, আমি আশা করি এটি অন্যকে সহায়তা করে। এটি এমন একটি ব্যাট ফাইল যা ব্যবহারকারীকে অনুমতি দেওয়ার জন্য অনুরোধ জানায় এবং তারপরে নিজেই বাড়িয়ে তোলে। এটা কিছু VB স্ক্রিপ্ট যা UAC প্রম্পট ট্রিগার ও আউট করে পাইপ ব্যাট ফাইল উঁচু পুনরায় রান ... http://jagaroth.livejournal.com/63875.html


2

আপনার যা দরকার তা এটি: http://sites.google.com/site/eneerge/home/BatchGotAdmin min


1
এই স্ক্রিপ্টটিতে একটি ছোট্ট বাগ রয়েছে, এটি কোনও পরামিতি ফরোয়ার্ড করে না। আপনার স্ক্রিপ্টটিকে এভাবে কল করার জন্য কেবল তাদের কমান্ডের মধ্যে রাখুন: ইউকো UAC.ShellExecute "% ~ s0", "% *", "", "রুনাস", 1 >> "% টেম্প%% getadmin.vbs"
সোভেনস

1

ফিউশনআইভেনটরি.অর্গ একটি ওপেন সোর্স সমাধান যা বেশিরভাগ ছোট মেরামতের দোকানে ব্যবহৃত হয়। এটি আপনার ব্যক্তিগত দূরবর্তীভাবে নিয়ন্ত্রিত উইন্ডোজ আপডেটের মতো হতে পারে।


0

এই সমাধানগুলির মধ্যে একটিও .Cmd ফাইলের জন্য কাজ করে না যা কমান্ড-লাইন প্যারামিটার সম্পর্কে সচেতন হতে হবে। এটি .Cmd ফাইলের একেবারে শুরুতে রাখুন এবং আপনার সমস্ত সমস্যার সমাধান হবে। (এটি ভবিষ্যতের লোকেরা এই থ্রেডটি ব্রাউজ করছে [আমি এটি উইন্ডোজ এক্সপি, 7 ভিস্তা এবং 8; এক্স 86 + x64 এ পরীক্ষা করেছি]):

@echo off
NET SESSION >nul 2>&1 && goto noUAC
title.
set n=%0 %*
set n=%n:"=" ^& Chr(34) ^& "%
echo Set objShell = CreateObject("Shell.Application")>"%tmp%\cmdUAC.vbs"
echo objShell.ShellExecute "cmd.exe", "/c start " ^& Chr(34) ^& "." ^& Chr(34) ^& " /d " ^& Chr(34) ^& "%CD%" ^& Chr(34) ^& " cmd /c %n%", "", "runas", ^1>>"%tmp%\cmdUAC.vbs"
echo Not Admin, Attempting to elevate...
cscript "%tmp%\cmdUAC.vbs" //Nologo
del "%tmp%\cmdUAC.vbs"
exit /b
:noUAC

::-----Normal Batch Starts Here---------------------

0

যেমন @ এমিলিও বলেছে, সেই স্ক্রিপ্টটি ঠিক আছে তবে এটি কোনও যুক্তি স্বীকার করে না। যুক্তিগুলির সাথে সামঞ্জস্য করতে এখানে পরিবর্তিত স্ক্রিপ্ট রয়েছে:

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.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"
:--------------------------------------

0

আপনি যদি পাওয়ারশেল ইনস্টল হচ্ছে তার উপর নির্ভর করতে না পারেন, আপনি স্ট্যাকওভারফ্লোতে এই সমাধানটি নিতে পারেন:

ব্যাচ ফাইল ব্যবহার করে ইউএসি দিয়ে স্বতঃ-উন্নত করুন

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


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