windows আপনি উইন্ডোজ পরিবেশে বর্তমান ব্যবহারকারী কিভাবে খুঁজে পাচ্ছেন?




batch-file (10)

% USERNAME% আপনাকে বর্তমানে চলমান প্রক্রিয়াটির ব্যবহারকারী নামটি সরবরাহ করবে। আপনি কীভাবে আপনার ব্যাচ ফাইল চালাচ্ছেন তার উপর নির্ভর করে, এটি বর্তমান ব্যবহারকারীর নাম হিসাবে অপরিহার্য নয়। উদাহরণস্বরূপ, আপনি আপনার ব্যাচ ফাইলে একটি নির্ধারিত কার্য মাধ্যমে, পরিষেবা থেকে, ইত্যাদি চালাতে পারেন।

Explorer.exe টাস্ক শুরু করে ব্যবহারকারীর নাম স্ক্র্যাপ করে বর্তমানে লগ-ইন থাকা ব্যবহারকারীর ব্যবহারকারী নামটি পাওয়ার আরও নিশ্চিত উপায়:

for /f "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do if /i "%%a %%b"=="User Name:" set _currdomain_user=%%c
for /f "TOKENS=1,2 DELIMS=\" %%a in ("%_currdomain_user%") do set _currdomain=%%a & set _curruser=%%b

একটি কমান্ড লাইন স্ক্রিপ্ট চলাকালীন, বর্তমান ব্যবহারকারীর নাম পাওয়া সম্ভব? ওএস উইন্ডোজ এক্সপি।


Answer #1

whoami , sed এবং AWK ইউনিক্সের আরও কিছু দরকারী সামান্য স্ক্রিপ্টিং ইউটিলিটি কী না তা সবসময় আমাকে বিরক্ত করে। যাইহোক, যদি আপনি কিছু বোকা বানান চান তবে ভিজ্যুয়াল স্টুডিও এক্সপ্রেস পান এবং নিম্নলিখিতটি কম্পাইল করুন:

#include <windows.h>
#include <stdio.h>

int main(int argc, char **argv) {
    printf("%s", GetUserName());
}

এবং শুধু আপনার ব্যাচ ফাইলে যে ব্যবহার।


Answer #2

এটি %USERNAME% হওয়া উচিত। স্পষ্টতই এই সহজেই spoofed করা যেতে পারে, তাই নিরাপত্তা জন্য এটা নির্ভর করবেন না।

দরকারী টিপ: কমান্ড প্রম্পটে টাইপ করা সমস্ত পরিবেশের ভেরিয়েবল তালিকাভুক্ত করবে।


Answer #3

আপনি ব্যবহারকারীর নাম পরিবর্তন করতে পারেন: %USERNAME%


Answer #4

আমি পরীক্ষার জন্য ব্যাচ ফাইল লেখা এই পদ্ধতি ব্যবহার করুন।

echo %userdomain%\%username%

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

এই কেউ সাহায্য করে আউট আশা করি।


Answer #5

একটি স্ট্যান্ডার্ড প্রেক্ষাপটে, প্রতিটি সংযুক্ত ব্যবহারকারী একটি explorer.exe প্রক্রিয়া ধারণ করে: কমান্ড [টাস্ক তালিকা / V | find "explorer"] এমন একটি লাইন ফেরত দেয় যার মধ্যে explorer.exe প্রক্রিয়া মালিকের রয়েছে, একটি অভিযোজিত রেজেক্স সহ প্রয়োজনীয়তা অর্জন করা সম্ভব মান। এটি উইন্ডোজ 7 এর অধীনে পুরোপুরি রান করে।

বিরল ক্ষেত্রে explorer.exe অন্য প্রোগ্রাম দ্বারা প্রতিস্থাপিত হয়, অনুসন্ধান ফিল্টারটি এই ক্ষেত্রে মেলে ধরতে পারে। যদি কমান্ডটি একটি খালি লাইন ফেরত দেয় তবে সম্ভবত এটির ব্যবহারকারীর লগ-ইন করা যায় না। উইন্ডোজ 7 এর সাথে চালানোও সম্ভব [প্রশ্ন সেশন | খুঁজুন ">"]।


Answer #6

যতদূর BlueBearr প্রতিক্রিয়া খুঁজে পাওয়া যায় ততক্ষণ (যখন আমি, আমার ব্যাচ স্ক্রিপ্টটি যেমন SYSTEM অধিকারের সাথে চালাচ্ছি) আমি এতে কিছু যোগ করতে হবে। কারণ আমার উইন্ডোজ ভাষার সংস্করণ (পোলিশ) লাইনটি "%% a %% b" দ্বারা ক্যাচ করা হয় কারণ == "ব্যবহারকারীর নাম:" সত্যই সম্মতি পায় (এটি আমার ভাষায় কিছু অস্পষ্ট অক্ষর রয়েছে) আমি প্রথম 7 টি লাইন বাদ দিয়েছি এবং 8 র্থ কাজ।

@for /f "SKIP= 7 TOKENS=3,4 DELIMS=\ " %%G in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do @IF %%G==%COMPUTERNAME% set _currdomain_user=%%H

Answer #7

উত্তরটি "কমান্ড-লাইন স্ক্রিপ্ট" ভাষাতে আপনার উপর নির্ভর করে।

cmd

পুরানো cmd.exe কমান্ড প্রম্পটে বা .bat বা .cmd স্ক্রিপ্টে, আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:

%USERNAME% - শুধু ব্যবহারকারী নাম পান।

%USERDOMAIN% - ব্যবহারকারীর ডোমেনটি পায়।

শক্তির উৎস

PowerShell কমান্ড প্রম্পট বা একটি .ps1 বা .psm1 স্ক্রিপ্টে, আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:

[System.Security.Principal.WindowsIdentity]::GetCurrent().Name - আপনাকে সম্পূর্ণ যোগ্যতাসম্পন্ন ব্যবহারকারীর নাম (যেমন ডোমেইন \ ব্যবহারকারীর নাম) দেয়। এটিও সবচেয়ে নিরাপদ পদ্ধতি কারণ এটি ব্যবহারকারীর দ্বারা আরও অন্যান্য $Env ভেরিয়েবলগুলির মত ওভাররাইড করা যাবে না।

$Env:Username - শুধু ব্যবহারকারী নাম পান।

$Env:UserDomain - ব্যবহারকারীর ডোমেনটি পায়।

$Env:ComputerName - $Env:ComputerName নাম পায়।


Answer #8

কমান্ড প্রম্পটে শুধু এই কমান্ডটি ব্যবহার করুন

C:\> whoami

Answer #9

বেশিরভাগ ক্ষেত্রে,% USERNAME% পরিবর্তনশীল আপনি যা চান তা হবে।

echo %USERNAME%

যাইহোক, যদি আপনি একটি elevated cmd শেল চালাচ্ছেন তবে% USERNAME% আপনার নিজের ব্যবহারকারীর নামটির পরিবর্তে প্রশাসকের নামের প্রতিবেদন করবে। যদি আপনি পরে জানতে চান, চালান:

for /f "tokens=2" %u in ('query session ^| findstr /R "^>"') do @echo %u






batch-file