Masalah salami periode karantina perusahaan janten kieu: leres-leres diperyogikeun pikeun ngaminimalkeun jumlah kunjungan ka kantor ku spesialis anu ngalayanan sareng konsultasi dina parangkat lunak aplikasi, sareng terus terang, pangguna sering nyiksa bantosan spesialis tanpa hoyong ngagali kana. masalahna sorangan, aranjeunna nyarios "aranjeunna bakal sumping - aranjeunna bakal ngabantosan - aranjeunna bakal ngalakukeun éta, tapi kuring bakal ngaroko / nginum kopi, jsb." Konsultasi telepon nalika ngabagi server langkung efektif upami anjeun ningali layar jauh.
Saatos "penemuan" sapédah urang, inpormasi waras ngeunaan topik tulisan éta muncul:
Sadaya inpo di handap ieu dimaksudkeun pikeun jalma anu tolerates perversions abnormal normalna pikeun meunangkeun hasil nu dipikahoyong, inventing métode teu perlu.
Pikeun henteu "narik ucing ku buntut", kuring bakal ngamimitian ku anu terakhir: sapédah tiasa dianggo pikeun pangguna rata-rata nganggo utiliti.
I. Konsol jeung kalangkang RDP.
Kusabab ngagunakeun kalawan hak administrator tina konsol Server Manajer -> QuickSessionCollection -> ku ngaklik sési pangguna anu dipikaresep, milih Shadow tina ménu kontéks pikeun personel instructing kumaha ngagunakeun software, sanés pilihan, metode "kayu" sanés dianggap, nyaéta:
1. Pilarian id RDP tina sési:
query user | findstr Administrator
atawa:
qwinsta | findstr Administrator
Sumawona"| findstr Administrator"Éta ngan merenah nalika anjeun terang naon persisna anu ngolola anjeun peryogi, atanapi nganggo ukur bagian kahiji pikeun ningali dulur asup kana server.
2. Nyambung ka sési ieu, disadiakeun yén dina domain kawijakan grup Pilihan "Nyetél aturan kadali jauh pikeun sési Layanan Desktop Jauh pangguna" dipilih kalayan sahenteuna pilihan "Monitor sési kalayan idin pangguna" dipilih (
mstsc /shadow:127
Perhatikeun yén daptar ngan bakal ngandung login pamaké.
Kuring ngulang deui yén tanpa hak admin anjeun bakal nampi ieu:
Tapi pikeun debugging awal program anu bakal dibahas, kuring nganggo akun sareng hak administrator.
II. Program
Jadi pernyataan masalah: nyieun sababaraha panganteur grafis basajan pikeun nyambung ka rasa kalangkang pamaké kalawan idin-Na, ngirim pesen ka pamaké. Lingkungan pemrograman anu dipilih nyaéta Lasarus.
1. Urang meunang daptar domain pinuh pamaké "login" - "ngaran lengkep" ti administrator, atawa deui ngaliwatan konsol nu:
wmic useraccount get Name,FullName
teu aya anu ngalarang malah ieu:
wmic useraccount get Name,FullName > c:testusername.txt
Kuring bakal langsung nyarios yén éta Lasarus anu ngagaduhan masalah sareng ngolah file ieu, sabab sacara standar encodingna nyaéta UCS-2, janten kuring kedah sacara manual ngarobih kana UTF-8 biasa. Aya seueur tab dina struktur file, atanapi langkung seueur rohangan, anu diputuskeun pikeun diolah sacara program; engké atanapi engké masalah encoding bakal direngsekeun, sareng filena bakal diropéa sacara program.
Janten, idena nyaéta gaduh folder anu tiasa diaksés ku pangguna program, contona c:test, dimana bakal aya 2 file: anu kahiji kalayan login sareng nami lengkep, anu kadua kalayan id_rdp sareng login pangguna. Salajengna, urang ngolah data ieu sabisa-bisa :).
Samentawis waktos, pikeun ngahubungkeun sareng daptar sési, urang mindahkeun eusi ieu (login sareng nami lengkep) kana susunan:
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;
Hapunten pikeun "loba kode", titik di handap ieu bakal leuwih singket.
2. Nganggo metodeu anu sami tina paragraf sateuacana, urang maca hasil ngolah daptar kana unsur StringGrid, sedengkeun kuring bakal masihan potongan kode anu "signifikan".
2.1 Kami nampi daptar sesi RDP ayeuna dina 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 Ngolah file (ngan ukur garis kode anu penting anu dituduhkeun):
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. Sambungan langsung sorangan ku ngaklik dina garis kalawan pamaké sarta nomer sési na:
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. Sababaraha leuwih hiasan geus dijieun, kayaning asihan ku ngaklik on radiobutton, sarta pesen ka pamaké atawa sakabéh pamaké.
→ Kode sumber lengkep tiasa ditingali
III. Ngagunakeun AdminLink - naon kuring nempo:
AdminLink ngahasilkeun potong kompas anu ngarujuk kana lokasi utilitas admilaunch.exe, sareng salinan pribadi tina utilitas peluncuran AdmiRun.Exe которая находится в папке пользователя, например Vasya, tipeu C: UsersvasyaWINDOWS. Sacara umum, henteu sadayana parah: anjeun tiasa maénkeun kalayan hak aksés kana file potong kompas sareng anu sanés pikeun mupus nurani admin anjeun nyalira.
sumber: www.habr.com