Utility alang sa koneksyon sa anino sa tawo sa dili-administrator sa mga sesyon sa gumagamit sa RDP sa WinServer 2012R2

Ang problema sa panahon sa pagkuwarentinas sa negosyo nahimo nga mga musunud: kinahanglan gyud nga maminusan ang gidaghanon sa mga pagbisita sa mga opisina sa mga espesyalista nga nagserbisyo ug nagkonsulta sa software sa aplikasyon, ug sa prangka nga pagsulti, ang mga tiggamit kanunay nga nag-abuso sa tabang sa mga espesyalista nga dili gusto nga masusi. Ang isyu mismo, giingon nila "moabot sila - motabang sila - buhaton nila, pero manigarilyo/moinom ko og kape, etc." Ang konsultasyon sa telepono kung magpaambit sa usa ka server mas epektibo kung imong tan-awon ang hilit nga screen.

Utility alang sa koneksyon sa anino sa tawo sa dili-administrator sa mga sesyon sa gumagamit sa RDP sa WinServer 2012R2

Pagkahuman sa "imbensyon" sa among bisikleta, ang maayong kasayuran sa hilisgutan sa artikulo mitungha: RDS Shadow - koneksyon sa anino sa mga sesyon sa gumagamit sa RDP sa Windows Server 2012 R2 o Unprivileged user shadow mode sa windows server o Pagdelegar sa pagdumala sa mga sesyon sa RDP. Ang tanan niini naglakip sa paggamit sa usa ka console, bisan sa mga elemento sa usa ka yano nga dialogue.

Ang tanang impormasyon sa ubos gituyo alang niadtong kinsa normal ang pagtugot sa abnormal nga mga kahiwian aron makuha ang gitinguha nga resulta, pag-imbento sa dili kinahanglan nga mga pamaagi.
Aron dili "ibira ang iring pinaagi sa ikog," magsugod ako sa katapusan: ang bisikleta magamit alang sa kasagaran nga tiggamit gamit ang utility AdmiLink, diin salamat sa tagsulat niini.

I. Console ug anino RDP.

Sukad sa paggamit sa mga katungod sa tagdumala sa console sa Server Manager -> QuickSessionCollection -> pinaagi sa pag-klik sa sesyon sa tiggamit sa interes, pagpili sa Shadow gikan sa menu sa konteksto alang sa mga personahe nga nagtudlo unsaon paggamit sa software, dili usa ka kapilian, laing "kahoy" nga pamaagi ang gikonsiderar, nga mao:

1. Hibal-i ang RDP id sa sesyon:

query user | findstr Administrator

o:

qwinsta | findstr Administrator 

Dugang pa"| findstr Administrator"Kombenyente ra kung nahibal-an nimo kung unsa gyud Administrator kinahanglan nimo, o gamita lamang ang unang bahin aron makita ang tanan nga naka-log in sa server.

Utility alang sa koneksyon sa anino sa tawo sa dili-administrator sa mga sesyon sa gumagamit sa RDP sa WinServer 2012R2

2. Sumpaysumpaya niini nga sesyon, basta anaa sa domain polisiya sa grupo Ang opsyon nga "I-set up ang remote control para sa mga sesyon sa user sa Remote Desktop Services" nga adunay labing menos ang opsyon nga "Monitor session with user permission" (dugang info):

mstsc /shadow:127

Palihug timan-i nga ang listahan maglangkob lamang sa mga login sa user.

Gisubli nako nga kung wala’y mga katungod sa admin makuha nimo ang mga musunud:

Utility alang sa koneksyon sa anino sa tawo sa dili-administrator sa mga sesyon sa gumagamit sa RDP sa WinServer 2012R2

Apan alang sa pasiuna nga pag-debug sa programa nga hisgutan, gigamit nako ang usa ka account nga adunay mga katungod sa tagdumala.

II. Programa

Busa ang problema nga pahayag: paghimo sa pipila ka yano nga graphical interface sa pagkonektar sa anino pagbati sa user uban sa iyang pagtugot, pagpadala sa usa ka mensahe ngadto sa user. Ang programming environment nga gipili mao si Lazarus.

1. Nakuha namo ang tibuok lista sa domain sa mga tiggamit nga "login" - "bug-os nga ngalan" gikan sa tagdumala, o pag-usab pinaagi sa console:

wmic useraccount get Name,FullName 

walay nagdili bisan niini:

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

Isulti ko dayon nga si Lazarus ang adunay problema sa pagproseso niini nga file, tungod kay sa default ang pag-encode niini mao ang UCS-2, mao nga kinahanglan nako nga mano-mano nga i-convert kini sa regular nga UTF-8. Adunay daghang mga tab sa istruktura sa file, o labi pa nga daghang mga wanang, nga nakahukom nga iproseso ang programmatically; sa madugay o sa madali ang problema sa pag-encode masulbad, ug ang file ma-update sa programmatically.

Busa, ang ideya mao nga adunay usa ka folder nga ma-access sa mga tiggamit sa programa, pananglitan c:test, diin adunay 2 ka mga file: ang una nga adunay login ug fullname, ang ikaduha nga adunay id_rdp ug login sa mga tiggamit. Sunod, among giproseso kini nga datos kutob sa among mahimo :).

Sa kasamtangan, aron makig-uban sa lista sa mga sesyon, among gibalhin kini (login ug fullname) nga mga sulod sa usa ka array:

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;

Nangayo ko og pasaylo sa "daghang code", ang mosunod nga mga punto mahimong mas mubo.

2. Gamit ang parehas nga pamaagi gikan sa miaging parapo, among gibasa ang resulta sa pagproseso sa lista sa elemento sa StringGrid, samtang maghatag ako usa ka "mahinungdanon" nga piraso sa code:

2.1 Among nadawat ang kasamtangang listahan sa mga sesyon sa RDP sa usa ka file:

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 Iproseso ang file (mahinungdanon ra nga linya sa code ang gipakita):

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. Direktang koneksyon mismo pinaagi sa pag-klik sa linya sa user ug sa numero sa iyang sesyon:

  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. Pipila pa ka mga dekorasyon ang nahimo, sama sa paghan-ay pinaagi sa pag-klik sa radiobutton, ug mga mensahe ngadto sa tiggamit o sa tanang tiggamit.

Utility alang sa koneksyon sa anino sa tawo sa dili-administrator sa mga sesyon sa gumagamit sa RDP sa WinServer 2012R2

β†’ Makita ang tibuok source code dinhi

III. Gamit ang AdminLink - ang akong nakita:

Ang AdminLink naghimo og usa ka shortcut nga nagpunting sa lokasyon sa utility admilaunch.exe, ug usa ka personal nga kopya sa utility sa paglansad AdmiRun.Exe nga nahimutang sa folder sa user, pananglitan Vasya, matang C:UsersvasyaWINDOWS. Sa kinatibuk-an, dili tanan daotan kaayo: mahimo ka nga magdula sa mga katungod sa pag-access sa shortcut file ug uban pa aron malimpyohan ang imong kaugalingon nga konsensya sa admin.

Source: www.habr.com

Idugang sa usa ka comment