WinServer 2012R2 ۾ RDP صارف سيشن کي غير منتظم جي انساني ڇانو ڪنيڪشن لاءِ استعمال

انٽرپرائز جي قرنطين واري عرصي دوران مسئلو هيٺيون ٿي ويو: اهو واقعي ضروري آهي ته آفيسرن جي دوري جي تعداد کي گهٽائڻ لاءِ ماهرن جي خدمت ۽ صلاحڪار ايپليڪيشن سافٽ ويئر تي، ۽ صاف طور تي، استعمال ڪندڙ اڪثر ڪري ماهرن جي مدد کي استعمال ڪرڻ کان سواء استعمال ڪرڻ چاهيندا آهن. مسئلو پاڻ، اهي چون ٿا ته "اهي ايندا - اهي مدد ڪندا - اهي اهو ڪندا، پر مان سگريٽ پيندس / ڪافي پيئندو، وغيره." ٽيليفون مشاورت جڏهن سرور شيئر ڪرڻ وڌيڪ اثرائتو آهي جيڪڏهن توهان ريموٽ اسڪرين کي ڏسو.

WinServer 2012R2 ۾ RDP صارف سيشن کي غير منتظم جي انساني ڇانو ڪنيڪشن لاءِ استعمال

اسان جي سائيڪل جي "ايجاد" کان پوء، مضمون جي موضوع تي سمجهه واري معلومات سامهون آئي: آر ڊي ايس شيڊو - استعمال ڪندڙن جي آر ڊي پي سيشن سان شيڊو ڪنيڪشن Windows Server 2012 R2 يا هڪ غير مراعات يافته استعمال ڪندڙ جو شيڊو موڊ windows server يا آر ڊي پي سيشن جي انتظام جو انتظام. انهن سڀني ۾ هڪ ڪنسول جو استعمال شامل آهي، جيتوڻيڪ هڪ سادي گفتگو جي عناصر سان.

هيٺ ڏنل سموري معلومات انهن لاءِ آهي جيڪي عام طور تي غير معمولي خرابين کي برداشت ڪري ٿو گهربل نتيجو حاصل ڪرڻ لاء، غير ضروري طريقن کي ايجاد ڪرڻ.
"ٻلي کي دم سان نه ڇڪڻ" لاءِ، مان آخري سان شروع ڪندس: سائيڪل يوٽيلٽي استعمال ڪندي سراسري استعمال ڪندڙ لاءِ ڪم ڪري ٿي AdmiLink، جنهن لاءِ هن جي ليکڪ جي مهرباني.

I. ڪنسول ۽ ڇانو RDP.

استعمال ڪرڻ کان وٺي سرور مئنيجر ڪنسول جا منتظم حق -> QuickSessionCollection -> دلچسپي جي استعمال ڪندڙ جي سيشن تي ڪلڪ ڪندي، سيڪشن مينيو مان شيڊو چونڊيو سافٽ ويئر کي ڪيئن استعمال ڪرڻ جي هدايت ڪندڙ اهلڪارن لاءِ، هڪ اختيار نه آهي، هڪ ٻيو "لکڻ" طريقو سمجهيو ويو، يعني:

1. سيشن جي RDP id معلوم ڪريو:

query user | findstr Administrator

يا:

qwinsta | findstr Administrator 

وڌيڪ "| ڳوليو ايڊمنسٽريٽر"اهو صرف آسان هو جڏهن توهان کي خبر هئي ته ڇا واقعي ايڊمنسٽريٽر توهان کي ضرورت آهي، يا صرف پهريون حصو استعمال ڪريو هر ڪنهن کي سرور ۾ لاگ ان ٿيل ڏسڻ لاءِ.

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

مان فوري طور تي چوندس ته اهو Lazarus هو جنهن کي هن فائل جي پروسيسنگ ۾ مسئلو هو، ڇاڪاڻ ته ڊفالٽ طور ان جي انڪوڊنگ 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 اسان کي فائل ۾ RDP سيشن جي موجوده لسٽ ملي ٿي:

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 جيڪو صارف جي فولڊر ۾ واقع آهي، مثال طور واسيا، قسم ج: استعمال ڪندڙ ونڊوز. عام طور تي، هر شيء ايترو خراب ناهي: توهان پنهنجي انتظامي ضمير کي صاف ڪرڻ لاء شارٽ کٽ فائل ۽ ٻين تائين رسائي جي حقن سان گڏ راند ڪري سگهو ٿا.

جو ذريعو: www.habr.com

DDoS تحفظ سان سائيٽن لاءِ قابل اعتماد هوسٽنگ خريد ڪريو، VPS VDS سرور 🔥 DDoS تحفظ سان قابل اعتماد ويب سائيٽ هوسٽنگ خريد ڪريو، VPS VDS سرورز | ProHoster