Pirsgirêk di heyama karantînayê ya pargîdaniyê de ev bû: bi rastî hewce ye ku meriv hejmara serdanên nivîsgehan ji hêla pisporên ku li ser nermalava serîlêdanê kar dikin û şêwir dikin kêm bikin, û bi eşkereyî bipeyivin, bikarhêner bi gelemperî bêyî ku bixwazin bikevin nav de alîkariya pisporan xirab dikin. mesele bixwe, dibêjin "ew ê werin - ew ê bibin alîkar - ew ê bikin, lê ez ê bikişînim / qehweyê vexwim û hwd." Ger hûn dîmendera dûr binerin şêwirdariya têlefonê dema parvekirina serverek bi bandortir e.

Piştî "îcad"a bisîklêta me, li ser mijara gotarê agahdariya saxlem derket holê: an an . Hemî wan bi karanîna konsolê, tewra bi hêmanên diyalogek hêsan re têkildar in.
Hemî agahdariya jêrîn ji bo kesên ku têne armanc kirin bi asayî guheztinên nenormal tehemûl dike ji bo bidestxistina encama tê xwestin, rêbazên nepêwîst îcad dikin.
Ji bo ku "pisîkê ji dûvê nekişînim", ez ê bi ya paşîn dest pê bikim: bisiklêt ji bo bikarhênerê navînî ku karûbarê bikar tîne dixebite. , ji bo ku bi saya nivîskarê wê.
I. Konsol û siya RDP.
Ji ber ku bi kar tînin mafên rêveberê konsolê Gerînendeyê Server -> QuickSessionCollection -> bi tikandina danişîna bikarhênerê eleqedar, Shadow ji pêşeka çarçoveyê hilbijêrin ji bo personelên ku hîn dikin ka meriv çawa nermalavê bikar tîne, ne vebijarkek e, rêbazek din a "dar" hate hesibandin, bi navê:
1. Nasnameya RDP ya rûniştinê bibînin:
query user | findstr Administratoran:
qwinsta | findstr Administrator Herweha "| findstr Rêveber"Tenê dema ku we dizanibû ku bi rastî çi ye, ew hêsan bû Birêvebir hûn hewce ne, an tenê beşa yekem bikar bînin da ku hûn bibînin ku her kesê têketî serverê ye.
![]()
2. Girêdana vê danişînê, bi şertê ku di domainê de ye polîtîkayên komê Vebijarka "Ji bo danişînên bikarhêner ên Karûbarên Sermaseya Dûr saz bike qaîdeyên kontrolê ji dûr ve" bi kêmanî vebijarka "Dîsana çavdêriya bi destûra bikarhêner" hatî hilbijartin ():
mstsc /shadow:127Ji kerema xwe not bikin ku navnîş dê tenê têketinên bikarhêneran hebe.
Ez dubare dikim ku bêyî mafên rêveberiyê hûn ê jêrîn bistînin:

Lê ji bo verastkirina pêşîn a bernameya ku dê were nîqaş kirin, min hesabek bi mafên rêvebir bikar anî.
II. Bername
Ji ber vê yekê gotina pirsgirêkê: afirandina hin navgînek grafîkî ya hêsan ku bi destûra wî ve bi hişmendiya siya bikarhêner ve were girêdan, peyamek ji bikarhêner re bişîne. Jîngeha bernamekirinê ya ku hatî hilbijartin Lazarus e.
1. Em navnîşa domaina tevahî ya bikarhêneran "têketin" - "navê tevahî" ji rêvebir, an jî dîsa bi riya konsolê digirin:
wmic useraccount get Name,FullName kes vê yekê jî qedexe nake:
wmic useraccount get Name,FullName > c:testusername.txtEz ê tavilê bibêjim ku ew Lazarus bû ku di pêvajokirina vê pelê de pirsgirêkek hebû, ji ber ku bi xwerû kodkirina wê UCS-2 e, ji ber vê yekê min neçar ma ku wê bi destan veguhezînim UTF-8-a birêkûpêk. Di strûktûra pelê de gelek tablo hene, an jî pir cîh, ku biryar hate girtin ku bi bernameyî pêvajo bikin; zû an dereng dê pirsgirêka kodkirinê were çareser kirin, û pel dê bi bername were nûve kirin.
Ji ber vê yekê, fikir ev e ku peldankek bigihîje bikarhênerên bernameyê, mînakî c:test, ku tê de 2 pel hebin: ya yekem bi têketin û navê tevahî, ya duyemîn bi id_rdp û têketina bikarhêneran. Dûv re, em van daneyan bi qasî ku ji destê me tê pêvajo dikin :).
Di vê navberê de, ji bo ku em bi navnîşa danişînan re têkildar bin, em vê naverokê (têketin û navê tevahî) vediguhezînin rêzek:
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;Ez ji bo "gelek kod" lêborînê dixwazim, xalên jêrîn dê kurttir bin.
2. Bi karanîna heman rêbazê ji paragrafa berê, em encama hilanîna navnîşê di hêmana StringGrid de dixwînin, dema ku ez ê kodek "girîng" bidim:
2.1 Em navnîşa heyî ya danişînên RDP di pelê de digirin:
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 Pelê pêvajo bikin (tenê rêzikên girîng ên kodê têne destnîşan kirin):
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. Girêdana rasterast bixwe bi tikandina li ser xeta bi bikarhêner û hejmara danişîna wî re:
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. Çend xemilandinên din jî hatine çêkirin, wek mînak bi tikandina bişkojka radyoyê, û peyamên ji bikarhêner an hemî bikarhêneran re.

→ Koda çavkaniyê ya tevahî dikare were dîtin
III. Bikaranîna AdminLink - tiştê ku min dît:
AdminLink kurtebirek çêdike ku cîhê kargêriyê vedibêje admilaunch.exe, û kopiyek kesane ya amûra destpêkirinê AdmiRun.Exe Ji bo nimûne, ku di peldanka bikarhêner de ye vasya, tîp C: Bikarhênerên WINDOWS. Bi gelemperî, ne her tişt ew qas xirab e: hûn dikarin bi mafên gihîştina pelê kurtebir û yên din re bilîzin da ku wijdana xweya rêveberiyê paqij bikin.
Source: www.habr.com
