WinServer 2012R2-n administratzaileak ez diren RDP erabiltzaileen saioetarako giza itzala konektatzeko utilitatea

Enpresaren berrogeialdi garaian arazoa honako hau bihurtu zen: benetan beharrezkoa da aplikazio-softwarean zerbitzua ematen eta kontsultatzen duten espezialisten bulegoetara bisita kopurua murriztea, eta egia esanda, erabiltzaileek askotan espezialisten laguntzaz abusatzen dute sakondu nahi izan gabe. gaia bera, "etorri egingo dira - lagunduko dute - egingo dute, baina kafea erre/edango dut, etab". Zerbitzari bat partekatzean telefono bidezko kontsulta eraginkorragoa da urruneko pantaila ikusten baduzu.

WinServer 2012R2-n administratzaileak ez diren RDP erabiltzaileen saioetarako giza itzala konektatzeko utilitatea

Gure bizikletaren "asmakuntza" ondoren, artikuluaren gaiari buruzko informazio sanoa agertu zen: RDS Shadow - itzal konexioa RDP erabiltzaileen saioetarako Windows Server 2012 R2-n edo Pribilegiorik gabeko erabiltzaileen itzal modua windows zerbitzarian edo RDP saioen kudeaketa eskuordetzea. Horiek guztiek kontsola baten erabilera dakar, baita elkarrizketa soil bateko elementuekin ere.

Beheko informazio guztia dutenei zuzenduta dago perbertsio anormalak normaltasunez onartzen ditu nahi den emaitza lortzeko, beharrezkoak ez diren metodoak asmatuz.
"Katuari buztanetik tira" ez egiteko, azken honekin hasiko naiz: bizikletak erabilgarritasuna erabiltzen duen erabiltzaile arruntarentzat funtzionatzen du. AdmiLink, horregatik bere egileari eskerrak.

I. Kontsola eta itzaleko RDP.

-rekin erabiltzen denetik Server Manager kontsolaren administratzaile-eskubideak -> QuickSessionCollection -> interesa duen erabiltzailearen saioan klik eginez, laster-menuan Itzala hautatuz softwarea nola erabili irakasten duten langileentzat, ez da aukera bat, beste "egurrezko" metodo bat hartu zen kontuan, hau da:

1. Ezagutu saioaren RDP IDa:

query user | findstr Administrator

edo:

qwinsta | findstr Administrator 

Gainera "| findstr Administratzailea"Zer zehatz zekienean bakarrik erosoa zen administrator behar duzu, edo erabili lehen zatia bakarrik zerbitzarian saioa hasita dauden guztiak ikusteko.

WinServer 2012R2-n administratzaileak ez diren RDP erabiltzaileen saioetarako giza itzala konektatzeko utilitatea

2. Konektatu saio honetara, betiere domeinuan talde politikak "Konfiguratu urruneko kontrol-arauak Urruneko Mahaigaineko Zerbitzuen erabiltzaile-saioetarako" aukera hautatzen da gutxienez "Begiratu saioa erabiltzailearen baimenarekin" aukera hautatuta (gehiago):

mstsc /shadow:127

Kontuan izan zerrendak erabiltzaileen saioak soilik izango dituela.

Errepikatzen dut administratzaile eskubiderik gabe honako hau lortuko duzula:

WinServer 2012R2-n administratzaileak ez diren RDP erabiltzaileen saioetarako giza itzala konektatzeko utilitatea

Baina eztabaidatuko den programaren aurretiazko arazketa egiteko, administratzaile-eskubideak dituen kontu bat erabili dut.

II. Programa

Beraz, arazoaren adierazpena: interfaze grafiko sinple bat sortzea erabiltzailearen baimenarekin erabiltzailearen itzal-zentzura konektatzeko, erabiltzaileari mezu bat bidaliz. Aukeratutako programazio ingurunea Lazaro da.

1. Erabiltzaileen "saioa" - "izen osoa" domeinu-zerrenda osoa jasotzen dugu administratzailearengandik, edo berriro kontsolaren bidez:

wmic useraccount get Name,FullName 

inork ez du debekatzen hau ere:

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

Berehala esango dut Lazaro izan zela fitxategi hau prozesatzeko arazoa izan zuena, bere kodifikazioa UCS-2 delako lehenespenez, beraz, eskuz UTF-8 arrunt bihurtu behar izan nuen. Fitxategien egituran fitxa asko daude, edo hobeto esanda, programazioz prozesatzea erabaki zen espazio asko; lehenago edo beranduago kodeketa arazoa konponduko da, eta fitxategia programatikoki eguneratuko da.

Beraz, programaren erabiltzaileentzat eskuragarri dagoen karpeta bat izatea da asmoa, adibidez c:test, eta bertan 2 fitxategi egongo dira: lehenengoa login eta fullnamerekin, bigarrena id_rdp eta erabiltzaileen loginarekin. Ondoren, datu hauek ahalik eta ondoen prozesatzen ditugu :).

Bitartean, saioen zerrendarekin lotzeko, eduki hau (saioa eta izen-abizenak) array batera transferitzen dugu:

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;

Barkatu "kode askogatik", hurrengo puntuak zehatzagoak izango dira.

2. Aurreko paragrafoko metodo bera erabiliz, zerrenda prozesatzearen emaitza StringGrid elementuan irakurriko dugu, kode zati "esanguratsu" bat emango dudan bitartean:

2.1 RDP saioen uneko zerrenda fitxategi batean jasoko dugu:

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 Fitxategia prozesatu (kode-lerro esanguratsuak soilik adierazten dira):

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. Zuzeneko konexioa bera erabiltzailearekin eta bere saioaren zenbakia duen lerroan klik eginez:

  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. Apaingarri pare bat gehiago egin dira, hala nola, irrati-botoian klik eginez ordenatzea eta erabiltzaileari edo erabiltzaile guztiei mezuak.

WinServer 2012R2-n administratzaileak ez diren RDP erabiltzaileen saioetarako giza itzala konektatzeko utilitatea

β†’ Iturburu-kode osoa ikus daiteke Hemen

III. AdminLink erabiliz - zer ikusi nuen:

AdminLink-ek erabilgarritasunaren kokapenari erreferentzia egiten dion lasterbide bat sortzen du admilaunch.exe, eta abiarazteko utilitatearen kopia pertsonala AdmiRun.Exe erabiltzailearen karpetan dagoena, adibidez Vasia, idatzi C: UsersvasyaWINDOWS. Oro har, dena ez da hain txarra: lasterbideen fitxategirako sarbide-eskubideekin eta besteekin jolastu dezakezu zure administratzailearen kontzientzia garbitzeko.

Iturria: www.habr.com

Gehitu iruzkin berria