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.
Apre "envansyon" bisiklèt nou an, enfòmasyon lisid sou sijè atik la te parèt:
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.
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.
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 (
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:
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.
→ Tout kòd sous ka wè
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