WinServer 2012R2 میں RDP صارف سیشنز سے غیر منتظم کے انسانی شیڈو کنکشن کے لیے افادیت

انٹرپرائز کی قرنطینہ مدت کے دوران مسئلہ مندرجہ ذیل بن گیا: ایپلیکیشن سافٹ ویئر کی خدمات اور مشاورت کرنے والے ماہرین کے دفاتر کے دوروں کی تعداد کو کم سے کم کرنا واقعی ضروری ہے، اور واضح طور پر، صارفین اکثر ماہرین کی مدد کا غلط استعمال کرتے ہیں مسئلہ خود، وہ کہتے ہیں "وہ آئیں گے - وہ مدد کریں گے - وہ کریں گے، لیکن میں سگریٹ پیوں گا/ کافی پیوں گا، وغیرہ۔" اگر آپ ریموٹ اسکرین کو دیکھتے ہیں تو سرور کا اشتراک کرتے وقت ٹیلی فون سے مشاورت زیادہ موثر ہوتی ہے۔

WinServer 2012R2 میں RDP صارف سیشنز سے غیر منتظم کے انسانی شیڈو کنکشن کے لیے افادیت

ہماری سائیکل کی "ایجاد" کے بعد، مضمون کے موضوع پر سمجھدار معلومات سامنے آئیں: RDS شیڈو - ونڈوز سرور 2012 R2 میں RDP صارف سیشنز سے شیڈو کنکشن یا ونڈوز سرور میں غیر مراعات یافتہ صارف شیڈو موڈ یا آر ڈی پی سیشنز کا انتظام سونپنا. ان سب میں کنسول کا استعمال شامل ہے، یہاں تک کہ ایک سادہ مکالمے کے عناصر کے ساتھ۔

نیچے دی گئی تمام معلومات ان لوگوں کے لیے ہیں جو عام طور پر غیر معمولی خرابیوں کو برداشت کرتا ہے غیر ضروری طریقے ایجاد کرتے ہوئے مطلوبہ نتیجہ حاصل کرنا۔
"بلی کو دم سے نہ کھینچنے" کے لیے، میں آخری سے شروع کروں گا: بائیک یوٹیلیٹی استعمال کرنے والے اوسط صارف کے لیے کام کرتی ہے۔ ایڈمی لنکجس کے لیے اس کے مصنف کا شکریہ۔

I. کنسول اور شیڈو RDP۔

کے ساتھ استعمال کے بعد سے سرور مینیجر کنسول کے منتظم کے حقوق -> QuickSessionCollection -> دلچسپی رکھنے والے صارف کے سیشن پر کلک کرکے، سیاق و سباق کے مینو سے شیڈو کو منتخب کریں۔ سافٹ ویئر استعمال کرنے کا طریقہ بتانے والے اہلکاروں کے لیے، ایک اختیار نہیں ہے، ایک اور "لکڑی" طریقہ پر غور کیا گیا تھا، یعنی:

1. سیشن کی RDP آئی ڈی معلوم کریں:

query user | findstr Administrator

یا:

qwinsta | findstr Administrator 

مزید یہ کہ"| findstr ایڈمنسٹریٹر"یہ تب ہی آسان تھا جب آپ جانتے تھے کہ بالکل کیا ہے۔ ایڈمنسٹریٹر آپ کو ضرورت ہے، یا سرور میں لاگ ان ہونے والے ہر فرد کو دیکھنے کے لیے صرف پہلا حصہ استعمال کریں۔

WinServer 2012R2 میں RDP صارف سیشنز سے غیر منتظم کے انسانی شیڈو کنکشن کے لیے افادیت

2. اس سیشن سے جڑیں، بشرطیکہ وہ ڈومین میں ہو۔ گروپ کی پالیسیاں "ریموٹ ڈیسک ٹاپ سروسز کے یوزر سیشنز کے لیے ریموٹ کنٹرول رولز سیٹ اپ کریں" آپشن کو کم از کم "صارف کی اجازت کے ساتھ مانیٹر سیشن" کے آپشن کے ساتھ منتخب کیا گیا ہے (مزید):

mstsc /shadow:127

براہ کرم نوٹ کریں کہ فہرست میں صرف صارف لاگ ان ہوں گے۔

میں دہراتا ہوں کہ منتظم کے حقوق کے بغیر آپ کو درج ذیل ملیں گے:

WinServer 2012R2 میں RDP صارف سیشنز سے غیر منتظم کے انسانی شیڈو کنکشن کے لیے افادیت

لیکن پروگرام کی ابتدائی ڈیبگنگ کے لیے جس پر بات کی جائے گی، میں نے ایڈمنسٹریٹر کے حقوق کے ساتھ ایک اکاؤنٹ استعمال کیا۔

II پروگرام

تو مسئلہ کا بیان: صارف کے سائے کے احساس سے اس کی اجازت سے جڑنے کے لیے کچھ آسان گرافیکل انٹرفیس بنانا، صارف کو پیغام بھیجنا۔ منتخب کردہ پروگرامنگ ماحول لازارس ہے۔

1. ہمیں ایڈمنسٹریٹر سے یا پھر کنسول کے ذریعے صارفین کی مکمل ڈومین فہرست "لاگ ان" - "مکمل نام" ملتی ہے:

wmic useraccount get Name,FullName 

اس سے بھی کوئی منع نہیں کرتا:

wmic useraccount get Name,FullName > c:testusername.txt

میں فوراً کہوں گا کہ یہ لازارس ہی تھا جسے اس فائل پر کارروائی کرنے میں دشواری تھی، چونکہ پہلے سے طے شدہ طور پر اس کی انکوڈنگ UCS-2 ہے، اس لیے مجھے اسے دستی طور پر باقاعدہ UTF-8 میں تبدیل کرنا پڑا۔ فائل کے ڈھانچے میں بہت سارے ٹیبز ہیں، یا بہت ساری جگہیں ہیں، جن کو پروگرام کے مطابق پروسیس کرنے کا فیصلہ کیا گیا ہے؛ جلد یا بدیر انکوڈنگ کا مسئلہ حل ہو جائے گا، اور فائل کو پروگرام کے لحاظ سے اپ ڈیٹ کر دیا جائے گا۔

لہذا، خیال یہ ہے کہ پروگرام کے صارفین کے لیے ایک فولڈر قابل رسائی ہو، مثال کے طور پر c:test، جس میں 2 فائلیں ہوں گی: پہلی لاگ ان اور پورے نام کے ساتھ، دوسری id_rdp اور صارفین کے لاگ ان کے ساتھ۔ اگلا، ہم اس ڈیٹا کو بہترین طریقے سے پروسیس کر سکتے ہیں :)۔

اس دوران، سیشنز کی فہرست کے ساتھ منسلک کرنے کے لیے، ہم اس (لاگ ان اور پورا نام) مواد کو ایک صف میں منتقل کرتے ہیں:

procedure Tf_rdp.UserF2Array;
var 
  F:TextFile;   i:integer;   f1, line1:String;   fL: TStringList;
begin //f_d глобальный путь к размещению файлов 
f1:=f_d+'user_name.txt';     //задача считать в массив содержимое файла
fL := TStringList.Create; // строку подвергнем метамарфозам с разделителями
fL.Delimiter := '|'; fL.StrictDelimiter := True;
AssignFile(F,f1); 
try // Открыть файл для чтения
  reset(F); ReadLn(F,line1);
  i:=0;
while not eof(F) do // Считываем строки, пока не закончится файл
begin
ReadLn(F,line1);
line1:= StringReplace(line1, '  ', '|',[]); //заменяем первый попавш.2пробела разделителем |
// удаляем все двойные пробелы
while pos('  ',line1)>0 do line1:= StringReplace(line1, '  ', ' ', [rfReplaceAll]);
begin
if (pos('|',line1)>0) then
begin //если разделитель существует заносим его в массив
fL.DelimitedText :=line1; // разбиваем на столбцы
if (fL[0]<>'') then //если учетка имеет имя
begin //вносим ее в массив
 inc(i); // избавляемся от возможных одиночных пробелов в логине
 fam[0,i]:=StringReplace(fL[1],' ','',[rfReplaceall, rfIgnoreCase]);
 fam[1,i]:=fL[0];
 end;end;end;end; // Готово. Закрываем файл.
 CloseFile(F);
 Fl.Free;
 except
 on E: EInOutError do  ShowMessage('Ошибка обработки файла. Детали: '+E.Message);
 end;end;

میں "بہت سارے کوڈ" کے لئے معذرت خواہ ہوں، درج ذیل نکات زیادہ جامع ہوں گے۔

2. پچھلے پیراگراف سے اسی طریقہ کو استعمال کرتے ہوئے، ہم StringGrid عنصر میں فہرست کی پروسیسنگ کا نتیجہ پڑھتے ہیں، جبکہ میں کوڈ کا ایک "اہم" حصہ دوں گا:

2.1 ہمیں آر ڈی پی سیشنز کی موجودہ فہرست فائل میں موصول ہوتی ہے:

f1:=f_d+'user.txt';
cmdline:='/c query user >'+ f1;
if ShellExecute(0,nil, PChar('cmd'),PChar(cmdline),nil,1)=0 then;
Sleep(500); // можно и подольше ждать пока файл для чтения создается

2.2 فائل پر کارروائی کریں (صرف کوڈ کی اہم لائنوں کی نشاندہی کی گئی ہے):

StringGrid1.Cells[0,i]:=fL[1]; StringGrid1.Cells[2,i]:=fL[3]; //кидаем в цикле в StringGrid1
login1:=StringReplace(fL[1],' ','',[rfReplaceall, rfIgnoreCase]); //убираем из логина пробелы
if (SearchArr(login1)>=0) then //ищем в массиве из п1. логин и записываем в таблицу ФИО
StringGrid1.Cells[1,i]:=fam[1,SearchArr(login1)]
else StringGrid1.Cells[1,i]:='+'; // либо записываем плюсик:)
.... //в зависимости от выбора пользователя сортируем и форматируем по данным
if (b_id.Checked=true) then SortGrid(0) else SortGrid(1);
StringGrid1.AutoSizeColumn(0);StringGrid1.AutoSizeColumn(1); StringGrid1.AutoSizeColumn(2);  

3. صارف اور اس کے سیشن نمبر کے ساتھ لائن پر کلک کرکے خود براہ راست کنکشن:

  id:=(StringGrid1.Row);// узнаем номер строки  IntToStr(StringGrid1.Row)
  ids:=StringGrid1.Cells[2,id]; //получаем идентификатор rdp
  cmdline:='/c mstsc /shadow:'+ ids; //и подключаемся....
 if (b_rdp.Checked=True) then  if ShellExecute(0,nil, PChar('cmd'),PChar(cmdline),nil,1) =0 then;       

4. کچھ مزید سجاوٹیں کی گئی ہیں، جیسے ریڈیو بٹن پر کلک کرکے چھانٹنا، اور صارف یا تمام صارفین کو پیغامات۔

WinServer 2012R2 میں RDP صارف سیشنز سے غیر منتظم کے انسانی شیڈو کنکشن کے لیے افادیت

→ مکمل سورس کوڈ دیکھا جا سکتا ہے۔ یہاں

III AdminLink کا استعمال کرتے ہوئے - میں نے کیا دیکھا:

AdminLink ایک شارٹ کٹ تیار کرتا ہے جو افادیت کے مقام کا حوالہ دیتا ہے۔ admilaunch.exe، اور لانچ یوٹیلیٹی کی ذاتی کاپی AdmiRun.Exe جو صارف کے فولڈر میں واقع ہے، مثال کے طور پر واسیا، قسم C:UsersvasyaWINDOWS. عام طور پر، سب کچھ اتنا برا نہیں ہے: آپ اپنے منتظم کے ضمیر کو صاف کرنے کے لیے شارٹ کٹ فائل اور دوسروں تک رسائی کے حقوق کے ساتھ کھیل سکتے ہیں۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں