Itilite pou koneksyon lonbraj imen ki pa administratè ak sesyon itilizatè RDP nan WinServer 2012R2

Pwoblèm nan pandan peryòd la karantèn nan antrepriz la te vin sa ki annapre yo: li vrèman nesesè pou misyon pou minimize kantite vizit nan biwo pa espesyalis sèvis ak konsiltasyon sou lojisyèl aplikasyon an, ak franchman pale, itilizatè yo souvan abize èd nan espesyalis san yo pa vle fouye nan. pwoblèm nan tèt li, yo di "yo pral vini - yo pral ede - yo pral fè li, men mwen pral fimen/bwè kafe, elatriye." Konsiltasyon telefòn lè pataje yon sèvè pi efikas si ou wè ekran aleka a.

Itilite pou koneksyon lonbraj imen ki pa administratè ak sesyon itilizatè RDP nan WinServer 2012R2

Apre "envansyon" bisiklèt nou an, enfòmasyon lisid sou sijè atik la te parèt: RDS Shadow - koneksyon lonbraj ak sesyon itilizatè RDP nan Windows Server 2012 R2 oswa Mòd lonbraj itilizatè san privilèj nan sèvè Windows oswa Delege jesyon sesyon RDP yo. Tout nan yo enplike itilizasyon yon konsole, menm ak eleman nan yon dyalòg senp.

Tout enfòmasyon ki anba a fèt pou moun ki tolere perversion nòmal nòmalman jwenn rezilta a vle, envante metòd nesesè.
Nan lòd pa "rale chat la pa ke a," mwen pral kòmanse ak dènye a: bisiklèt la ap travay pou itilizatè an mwayèn lè l sèvi avèk sèvis piblik la. AdmiLink, pou ki gras a otè li.

I. Konsole ak lonbraj RDP.

Depi itilize ak dwa administratè konsole Manadjè sèvè a -> QuickSessionCollection -> pa klike sou sesyon itilizatè ki enterese a, chwazi Shadow nan meni kontèks la. pou pèsonèl ki enstwi kijan pou yo itilize lojisyèl an, se pa yon opsyon, yo te konsidere yon lòt metòd "an bwa", sètadi:

1. Chèche konnen id RDP sesyon an:

query user | findstr Administrator

oswa:

qwinsta | findstr Administrator 

Anplis "| findstr Administratè"Li te pratik sèlman lè ou te konnen ki sa egzakteman Administratè ou bezwen, oswa itilize sèlman premye pati a pou wè tout moun ki konekte nan sèvè a.

Itilite pou koneksyon lonbraj imen ki pa administratè ak sesyon itilizatè RDP nan WinServer 2012R2

2. Konekte nan sesyon sa a, depi ke nan domèn nan politik gwoup yo Opsyon "Fikse règ kontwòl remote pou sesyon itilizatè nan Sèvis Desktop Remote" yo chwazi ak opsyon omwen "Monitè sesyon ak pèmisyon itilizatè" chwazi (plis):

mstsc /shadow:127

Tanpri sonje ke lis la pral sèlman genyen koneksyon itilizatè.

Mwen repete ke san dwa admin ou pral jwenn sa ki annapre yo:

Itilite pou koneksyon lonbraj imen ki pa administratè ak sesyon itilizatè RDP nan WinServer 2012R2

Men, pou debogaj preliminè nan pwogram nan ki pral diskite, mwen te itilize yon kont ak dwa administratè.

II. Pwogram

Se konsa, deklarasyon an pwoblèm: kreye kèk senp koòdone grafik konekte nan sans lonbraj itilizatè a ak pèmisyon li, voye yon mesaj bay itilizatè a. Anviwònman pwogramasyon an chwazi se Laza.

1. Nou jwenn lis domèn konplè itilizatè yo "konekte" - "non konplè" nan men administratè a, oswa ankò atravè konsole a:

wmic useraccount get Name,FullName 

pa gen moun ki entèdi menm sa:

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

Mwen pral di touswit ke se Lazarus ki te gen yon pwoblèm ak trete fichye sa a, paske pa default kodaj li se UCS-2, kidonk mwen jis te oblije manyèlman konvèti li nan UTF-8 regilye. Gen anpil onglet nan estrikti dosye a, oswa pito yon anpil nan espas, ke li te deside trete pwogramasyon; pi bonè oswa pita pwoblèm nan kodaj yo pral rezoud, epi yo pral dosye a mete ajou pwogramasyon.

Kidonk, lide a se genyen yon katab aksesib pou itilizatè yo nan pwogram nan, pa egzanp c:test, nan ki pral gen 2 fichye: premye a ak login ak non konplè, dezyèm nan ak id_rdp ak login nan itilizatè yo. Apre sa, nou trete done sa yo pi byen nou kapab :).

Antretan, pou asosye ak lis sesyon yo, nou transfere sa (konekte ak non konplè) sa a nan yon etalaj:

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;

Mwen eskize pou "anpil kòd la", pwen sa yo pral pi kout.

2. Sèvi ak metòd la menm nan paragraf anvan an, nou li rezilta a nan pwosesis lis la nan eleman nan StringGrid, pandan ke mwen pral bay yon "siyifikatif" moso nan kòd:

2.1 Nou resevwa lis aktyèl la nan sesyon RDP nan yon dosye:

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 Pwosesis dosye a (sèlman liy enpòtan nan kòd yo endike):

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. Koneksyon dirèk tèt li pa klike sou liy lan ak itilizatè a ak nimewo sesyon li a:

  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. Yon koup plis dekorasyon yo te fè, tankou klasman pa klike sou bouton radyo a, ak mesaj bay itilizatè a oswa tout itilizatè yo.

Itilite pou koneksyon lonbraj imen ki pa administratè ak sesyon itilizatè RDP nan WinServer 2012R2

→ Tout kòd sous ka wè isit la

III. Sèvi ak AdminLink - sa mwen te wè:

AdminLink jenere yon chemen kout ki fè referans a kote sèvis piblik la admilaunch.exe, ak yon kopi pèsonèl sèvis piblik lansman an AdmiRun.Exe ki sitiye nan katab itilizatè a, pou egzanp Vasya, tape C: UsersvasyaWINDOWS. An jeneral, tout bagay pa tèlman mal: ou ka jwe ak dwa aksè nan dosye a chemen kout ak lòt moun pou netwaye pwòp konsyans admin ou.

Sous: www.habr.com

Add nouvo kòmantè