Aproximativ un an și jumătate am început să folosesc pagini HTML pentru a introduce date de utilizator, în principiu pentru a putea masca parolele tastate. Din moment ce nu sunt un dezvoltator de web, acestea au fost cele mai simple pagini HTML.
Folosind paginile HTML este posibil pentru a rezolva problema mea, dar după un timp au existat remedieri pentru Microsoft Internet Explorer (IE) și serviciul de pachetul Windows, care a rupt cursul obișnuit al lucrării. După instalarea acestor patch-uri și pachete de servicii nu actualizează script-urile mele au devenit atât de confortabil, ca înainte când ai putea rula doar script-ul prin dublu-clic pe mouse-ul și pentru a începe să introducă date o dată. Acum, înainte de a începe să tastați, a fost obligată să răspundă afirmativ la o serie de solicitări de securitate, sau pagina a refuzat să accepte date introduse de utilizator. A fost necesar să se facă ceva cu ceea ce se numește acum conținut activ - practic, scripturi și componente ActiveX în codul HTML. În plus, script-urile mele utilizate de către alți administratori, și eu sunt obosit de apeluri și e-mail-uri din cauza unor astfel de incoerențe.
Soluția la această problemă mi-a venit la prima lansare a noului Scriptomatic 2.0. Una dintre aplicații am fost foarte interesată. A fost făcut foarte elegant, dar, cel mai important, a fost efectuat fără întrebări din partea subsistemului de securitate. Am fost uimit de ceea ce pot face cu interfața HTA (aplicația HTML).
HTA de bază
Scenele HTA, care au apărut pentru prima dată în IE 5.0, au fost o dată destul de populare. Dar, din păcate, când am început să dezvolt script-uri de administrare pentru Windows NT, nu am auzit nimic și nu am citit despre ele. De fapt, script-ul de HTA este o pagină standard de HTML cu extensia .hta, dar script-uri nu sunt supuse HTA unor limitări stricte și măsuri de securitate obligatorii aplicate în paginile HTML.
Crearea unei HTA necesită anumite abilități în scrierea de scripturi. De obicei, programarea în HTML este folosită pentru a crea formulare de intrare pe ecran, în timp ce programele din limbajul VBScript sunt inserate în codul paginii HTML. De obicei, totul se reduce la intrarea în formularul de introducere de date a unui buton care generează evenimentul onclick când faceți clic pe el. Cu alte cuvinte, după ce utilizatorul introduce informații și dă clic pe buton, codul din VBScript trebuie să funcționeze și să efectueze o anumită acțiune.
Dacă sunteți nou în programare în HTML (așa cum a fost cu mine primul), va trebui să faceți niște cercetări despre resursele MSDN (Microsoft Developer Network). Există multe exemple și referințe diferite, iar după ce ați petrecut câteva zile, puteți crea scenarii HTA cu adevărat utile.
Scrierea manuală a codurilor HTML și utilizarea instrumentelor de dezvoltare specializate este ca și noaptea și ziua. Majoritatea codului, și poate tot codul, sunt create automat, ca și cum ați crea în mod grafic ecranul gol pentru intrare. După crearea formularului, trebuie să introduceți acest cod în secțiunea de script și să salvați fișierul rezultat cu extensia .hta.
Acordați o atenție deosebită: ca orice aplicație sau scenariu, un HTA poate conține un potențial pericol, mai ales dacă provine dintr-o sursă necunoscută sau neîncrezătoare. Încercați să respectați regula generală că, dacă primiți fișiere dintr-o sursă necunoscută, nu le deschideți, ci doar să le ștergeți imediat. Folosesc numai scenele HTA din propria mea producție și le transmit numai persoanelor pe care le cunosc.
Analizați scenariul HTA
Figura 1 prezintă scenariul HTA principal, iar în Lista 1 - codul care creează acest script. Codul HTML implementează o structură simplă a elementelor definite de etichete. Majoritatea etichetelor sunt asociate. Eticheta inițiază elementul, iar eticheta încheie acest element.
După cum puteți vedea din listare 1, eticheta începe HTA, eticheta este sfârșitul acesteia. Apoi urmează primul element de informație despre document. În acest exemplu, antetul pentru elementul de intrare și elementul de fereastră se află între etichetele și etichetele. Elementul HTA: APPLICATION (aplicație HTA), care prezintă fragmentul A în listare 1, definește forma formularului pentru introducerea datelor. În acest caz, setările element de HTA: APPLICATION setați fereastra de interfață cu utilizatorul, care utilizează o bordură subțire, stabilind stilul de frontieră este setat ca scufundată, minimalizează și maximizați butoanele sunt activate și blocate bara de defilare și pictograma aplicației, astfel încât acestea nu apar în bara de activități.
Când utilizați atributele CAPTION și SYSMENU, aveți grijă. Dacă le instalați incorect, formularul nu poate fi închis. Valoarea atributului CAPTION este egală cu NO. Exclude bara de titlu a ferestrei aplicației. Dacă setați încă atributul SYSMENU la NO. butoanele Minimizare, Maximizare și Închidere vor fi excluse. Deci, decizia de a seta atributele CAPTION sau SYSMENU să fie NO. asigurați-vă că pe pagina dvs. există un buton Închidere.
Când testați acest script HTA, am observat că dacă omiteți toate aceste atribute HTA: APPLICATION și pur și simplu includeți eticheta. sunt utilizate setările implicite, iar aspectul lor este destul de satisfăcător. Dacă doriți să faceți formularul de intrare mai atrăgător, utilizați atributele HTA: APPLICATION enumerate în Tabelul 1. Tabelul prezintă diferitele atribute, valorile posibile și valorile implicite.
Fragmentul B din listare 1 prezintă elementul script HTA, care începe cu eticheta. Limbajul de limbă = atributul urmează, unde atributul specifică limba pentru crearea scriptului, în acest caz este VBScript. În acest exemplu HTA, elementul script conține o subrutină simplă în limba VBScript care este executată atunci când utilizatorul face clic pe buton pentru a activa scriptul. Apăsați acest buton pentru a rula scriptul. Nimic altceva nu este special, dar puteți copia orice parte a acestui cod VBScript care se află între etichete. și obțineți rapid un script de lucru.
Ultima secțiune din listare 1 începe cu o etichetă. dar se termină cu o etichetă. Acest element conține codul HTML care creează un formular în cazul în care utilizatorul introduce date în domeniu și activează butonul. Exemplul din figura 1 ETM are două câmpuri de intrare: un câmp pentru introducerea de text simplu câmp text și o parolă, care ascunde orice text introdus de utilizator. Există încă două butoane: unul se execută codul în VBScript, un alt închide aplicația.
Să aruncăm o privire mai atentă asupra elementului corpului. Fragmentul C prezintă codul care creează câmpul de text simplu din Figura 1. Aici, eticheta
începe un nou paragraf și eticheta
o termina. Etichete și sunt folosite pentru a specifica conturul, mărimea și culoarea textului. În cazul în care definiția acestor parametri nu este necesară, și doriți să utilizați stilul de text prestabilit, acest set cu cască va fi Times New Roman, de culoare neagră, dimensiunea fontului 3. Trebuie să spun, dimensiunea fontului sunt diferite de fonturile obișnuite care sunt utilizate, de exemplu, în Microsoft Word. În HTML, puteți specifica șapte dimensiuni (de la 1 la 7) utilizând dimensiunea = atribut, cu dimensiunea 1 fiind cea mai mică și dimensiunea 7 fiind cea mai mare. Chiar dacă HTA utilizează dimensiunea implicită, codul de la înștiințărilor C setează dimensiunea fontului de 3 cuvinte în câmpul de text (caseta text) și cuvinte Utilizați o casetă de text pentru majoritatea orice tip de intrare (Utilizați un câmp de text pentru majoritatea tipurilor de I), pentru a demonstra .
Elementul de intrare definește un câmp de introducere în care utilizatorul poate introduce date. Tipul de egalitate = atributul specifică tipul câmpului de introducere (de exemplu câmpul de text simplu, câmpul de parolă, butonul obișnuit, comutatorul). În acest caz, creați un câmp pentru text simplu (tip = "text"), care are numele T1 (nume = "T1") și dimensiunea acestui câmp este de 20 de caractere (dimensiune = "20"). Și valoarea T1.value înseamnă modul în care vă referiți la acest câmp de text din codul dvs. în VBScript. Spre deosebire de majoritatea etichetelor, eticheta nu are o etichetă finală.
Codul câmpului pentru parolă al textului are același format ca și codul pentru un text de intrare câmp. Cu toate acestea, în acest caz, specificați o „parolă“, și nu „text“ în tipul de ecuație = atribut, în acest caz, orice text introdus de utilizator, va fi ascuns.
Fragmentul D arată codul care creează butonul Apăsați acest buton pentru a rula butonul de script pentru a rula scriptul și butonul Ieșire de ieșire. Ambele butoane au tipul de buton de intrare (buton). Ambele butoane au, de asemenea, un atribut de intrare numit onclick. Atributul onclick este setat pentru numele subrutinei, a metodei sau a altui cod care ar trebui să fie activat la apăsarea butonului mouse-ului. Pentru Push acest buton pentru a rula scriptul. onclick este setat la rutine showsetting (Arată setări.) - a se vedea fragmentul B în Listarea 1. Această rutină arată textul pe care utilizatorul introduce în caseta de text și în caseta Parolă. Textul introdus de utilizatori în câmpul Parolă va fi afișat în text simplu. Atributul onclick al butonului de ieșire este setat la metoda self.close (auto-închidere). Această metodă închide direct HTA. Aici Self se referă la fereastra curentă deschisă.
Posibilitățile sunt nesfârșite
Acest exemplu HTA arată doar o mică parte a ceea ce se poate obține în scenariile HTA. Apoi, voi introduce un script HTA pentru a atribui și verifica cotele de utilizator pe un computer local și la distanță.
Structura HTA
Figura 2 prezintă utilitatea pentru cotele utilizatorilor, User Quota Utility: Ecranul pentru introducerea informațiilor constă din patru câmpuri pentru introducerea informațiilor, o listă derulantă, două butoane și două câmpuri de text. Luați în considerare aceste componente și activitatea utilității în sine.
Câmpuri pentru informații de intrare (caseta de introducere). Primul câmp pentru introducerea informațiilor este destinat introducerii unei liste de ID-uri de utilizator, ID, pentru conturile de utilizator pentru care doriți să schimbați cotele. În cel de-al doilea câmp pentru introducerea informațiilor, utilizatorii introduc numele serverului sau computerului în care sunt distribuite cotele. Dacă acest câmp este lăsat necompletat, atunci utilitarul acționează automat pe mașina locală. Dacă ID-urile de utilizator specificate sunt conturi pe alt computer, trebuie să introduceți numele domeniului sau computerului în al treilea câmp pentru a introduce informații. Dacă acest câmp este lăsat necompletat, utilitarul este implicit sistemul local.
În al patrulea câmp pentru introducerea informațiilor, utilizatorii introduc dimensiunea contingentelor în octeți. După cum puteți vedea din figura 1, am introdus dimensiunea implicită de 5368709120; 5 GB, dar puteți seta dimensiunea dorită. Dacă preferați să introduceți cotă în octeți, megaocteți sau gigabytes, este posibil să se utilizeze de-al doilea HTA (UserQuotaUtility2.hta), în care sunt puse în aplicare aceste trei posibilități așa cum se arată în figura 3.
Casetă detașabilă. Lista derulantă se află imediat după cel de-al doilea câmp de text. Acesta permite utilizatorului să selecteze litera unității pentru computerul pe care sunt active cotele. Fereastra verticală din acest exemplu HTA are o listă destul de impresionantă de litere de unitate. Valoarea implicită în scriptul HTA de mai sus este unitatea C:
Button. Când utilizatorul face clic pe primul buton Run Run Modify Quotas pentru utilizatori, utilitarul User Quota va încerca să stabilească cota pentru sistemele selectate. Această acțiune este asociată cu subrutina RunMod din secțiunea VBScript din acest HTA, care afișează listare 2.
Al doilea buton, Run Query Cota - activa solicitarea cotei, oferă o listă a cotelor pentru dispozitivul de server sau de stocare specificat. Această acțiune se datorează RunQuery de rutină în VBScript sub HTA. Această aplicație nu filtrează ID-uri de utilizator atunci când executați această subrutină, afișează toate setările pentru cotele de utilizator pentru calculator sau de stocare dispozitiv specificat. Chiar dacă utilizatorul a enumerat ID-uri de utilizator în primul câmp pentru a introduce informații, și pentru a activa Executare butonul Query Contingent va determina care va furniza informații cu privire la toate conturile de pe acest sistem, și nu numai cu privire la înregistrările enumerate în listă.
Analiza HTA
După setările aplicației, HTA include secțiunea VBScript, a se vedea Listarea 2. Această secțiune conține trei subprograme :. Window_Onload, RunMod și RunQuery.
Subrutina Window_Onload. Subrutina Window_Onload este executată automat când această aplicație este activată. Subrutina utilizează mai întâi self.Focus () pentru a porni fereastra aplicației înainte de toate celelalte ferestre deschise. Apoi, subrutina ajustează dimensiunea ferestrei aplicației și stabilește dimensiunea implicită a cotei (qlimit.value).
Subrutina RunMod. Subrutina RunMod, care este asociată cu butonul Run Modify User Quotas, conține codul pentru modificarea cotelor de utilizator. Pe lângă curățarea valorii câmpului Stare (cu operatorul statval.value = ""), acest cod verifică returul de călătorie sau feedul de linie la sfârșitul câmpului pentru a introduce ID-ul utilizatorului. Este nevoie de „carriage return“ și „feed-line“ pentru identificatorul de final, astfel încât în cazul în care nu este, atunci se adaugă codul. Rutina RunMod utilizează funcția Split cu delimitatorul vbcrlf pentru a construi o serie de ID-uri de utilizator, care ulterior utilizează HTA pentru a stabili aceste cote.
Acest script atribuie valori din formular pentru a introduce informații HTA la variabilele care sunt utilizate în scenariu. Acest script utilizează GetObject pentru a găsi instanța clasei. Acesta utilizează klassWin32_DiskQuota pentru rutine RunMod, și pentru RunQuery, și folosește clasa Win32_ComputerSystem pentru a căuta numele computerului local atunci când utilizatorul părăsește semifabricatului de intrare de domeniu.
Întreaga rutină RunMod este dată în fragmentul de cod A din listare 2. Aici rutina procesează ID-urile de utilizator, ID-ul, în buclă. Pentru fiecare ID, subrutina găsește o cotă de utilizator specială, stabilește și stabilește valoarea limită folosind metoda objQuota.Put_.
Subrutina RunQuery. Sub RunQuery, care este asociat cu Run Query butonul butonul Contingent, începe prin stabilirea parametrilor pentru valorile de intrare. Apoi RunQuery seturi constante wbemFlagForwardOnly și wbemFlagReturnImmediately. Constant wbemFlagForwardOnly face ca script-ul pentru a obține contra unidirecțional astfel de metri de obicei, sunt mult mai rapidă și utilizează mai puțină memorie decât contoarele convenționale. Constant wbemFlagReturnImmediately face un apel pentru întoarcerea imediată.
Apoi RunQuery se conectează de rutină prin intermediul Windows Management Instrumentation (WMI) la un server sau computer care este specificat de către utilizator, în cazul în care acest câmp este lăsat necompletat, script-ul se conectează la computerul local. Subrutina folosește apoi cere limba WQL (WMI Query Language), pentru a obține informațiile disponibile cu privire la cota, deoarece fragmentul de cod B. Acest script interogare definește constantele wbemFlagForwardOnly și wbemFlagReturnImmediately. Dacă doriți să reducă numărul de linii de cod, este posibil să se combine valorile acestor constante și setați valoarea zecimală la 48 - un exemplu al acestei versiuni mai scurte a unui fragment de cod.
În interogarea WQL, parametrul WQL este opțional. Codul Fragment B utilizează această opțiune, dar dacă nu activați, trebuie să puneți două virgule cu nimic între, deoarece operatorul Set colItems fragment A. indică o mai bună încă WQL, pentru că prezența sa în mod clar că acest lucru este - Selectați declarația pentru a utiliza WMI.
După ce RunQuery primește date despre cotele existente, RunQuery afișează toate datele primite într-o foaie de calcul Microsoft Excel. Rețineți că, deoarece nu există o proprietate de tip contra pentru clasa Win32_DiskQuota, rutina plasează inițializarea Excel în bucla For Next și o plasează pe eticheta do_once. Dacă ar fi disponibilă proprietatea contra, rutina ar putea efectua o verificare a condiției "valoare mai mare decât zero", atunci nu ar fi fost necesar să inițializați Excel și bucla For Next, dacă nu au existat rezultate de returnare pentru interogare.
Finalizarea codului. Unitatea în limba VBScript în ETM cuprinde, de asemenea, funcția ConvStatus așa cum se arată în C. fragmentul Această funcție convertește cotele de membru reprezentare numerică 0, 1 sau 2 valori în OK, avertizare sau Depasit respectiv. Rețineți că codul verifică erorile din blocurile cheie ale programului VBScript. Acest cod utilizează Err.Description pentru a detecta erorile generate de sistem și apoi le afișează în câmpul Status Box pentru ETM. După o secțiune din VBScript, fișierul HTA include codul pentru fereastra de intrare.