Verificați disponibilitatea unei unități de rețea

Verificați disponibilitatea unei unități de rețea

Trebuie să verificați - dacă unitatea de rețea disponibile de citire / scriere / ștergere din computer (anii de utilizare) sub Win98. Server care rulează Novell 5.0
În acest moment, aceasta este doar o încercare de a crea - șterge un fișier gol în blocul try. EXEPT.
Poate că există metode mai elegante?

Ei bine, este teoretic posibil să se verifice drepturile de utilizator. Novell Client vă permite să urmăriți pentru drepturile de utilizare curente la toate obiectele. Rămâne de a găsi o descriere a API.

Teoretic este posibil, dar nu da nimic, pe care doriți să verificați nu este corect, și disponibilitatea, fișierul mozhent fi deschis, cum ar fi un monopol și ar nezhostupnym, deși dreptul de a citi acolo.

> Anatoly Podgoretsky
Iar dacă re-citit întrebarea cu atenție?
Și aici niște fișiere?

Ei bine, știi! Ce întrebare - răspuns.
Este puțin probabil ca dezvoltatorii sa bazat pe curățare cu mături.

Întrebare: Cred că este unic „Dacă o unitate de rețea este disponibil,.“. Despre nu au fost menționate aici, drepturi de utilizator.

> Este puțin probabil ca dezvoltatorii sa bazat pe curățare cu mături.
Și de aceea de multe ori trebuie să dezactivați AutoSave în Word-e la dimensiunea documentului mai mult. Acest lucru, prietenul meu, cineva ca.

Mai scurte. Nu există metode. Bine, avem ceea ce avem

Risca pentru a intra în „ponosit“:
Desigur, întrebarea „dacă unitatea de rețea este disponibilă“ este lipsită de ambiguitate.
Dar nu din context, întrebarea este „disponibilă în cazul în care unitatea de rețea de citire / scriere / ștergere“, cu excepția cazului în nici un asociații de drepturi de utilizator, am cel puțin, nu suna.

În general, puteți verifica disponibilitatea bile, după ce a constatat fișier attrubuty (nu mă refer la „ascuns“ sau „arhiva“)

Și ce probleme:

1. Creați un fișier. // verifica disponibilitatea.
1.1. În cazul în care o eroare la punctul 1 - încercați să deschideți un fișier existent
2. Scrierea în ea. // verifica pentru a scrie
3. Am citit din ea. // citit de verificare
4. Ștergeți fișierul. // verifica ștergerea fișierelor


Dacă o eroare în executarea revendicării 1 și punctul 1.1. în același timp - „unitatea nu este disponibilă.“
(Așa cum am înțeles - nu ne pasă, de ce?)

Și restul elementelor sunt prelucrate în mod individual.

neînțelegere criză mai scurt.
întrebare în mintea mea nu a fost într-adevăr o curbă, dar într-adevăr nevoie să fie văzut pentru a descifra problema.

1. Programul se blochează se execută atunci când pornește Windows și cronometrul este angajat în arhivarea și trimiterea de e_mail pentru un set de fișiere.
Nu există semne vizibile ale existenței sale, cu excepția pictograma din bara de sistem nu apare.
2. Numitul set de fișiere strict aleatorii (poate varia în funcție de locația sa în rețea și drive-urile locale).
Toate numele și căile pe care le definiți și acestea sunt stocate în INI-shke.
3. Cu fișierul pe discul local este simplu - trebuie doar să verificați, iar dacă acest lucru nu se deschide fyal altă aplicație la momentul tratamentului, dar ele sunt întotdeauna disponibile.
Cu o rețea de mai complicată. Desigur, în cazul în care o unitate de rețea din orice motiv nu este disponibil (de exemplu, cablul de la hub-ul curat tras o mătură) în momentul sarcinii reale - sarcina nu va reuși, vom analiza și înțelege-l.
Dar, în acest moment deja Pozdnjak Rush - există anumite date de adrese de referință care trebuie să fie respectate.
4. Rezolvarea problemei - cu un spațiu mai des decât sarcinile principale ale timer verificate - și dacă putem găsi chiar și acele fișiere, și chiar să lucreze cu ei.
5. Punerea în aplicare în acest moment: calea este înregistrată în INI-tempo shke a crea un fișier, scrie la linia, citit de la locul său, scoateți-l. Dacă totul a decurs corect - apoi OK. - în cazul în care nu, programul afișează un mesaj de eroare din seria „nu este un director Verificare disponibilitate).

6. Problema a fost după cum urmează. Există o modalitate de a realiza revendicarea 5 nu este urmărit o grămadă de operațiuni de fișiere de rețea

Vă mulțumesc tuturor pentru discuția, scuza erorile din formularea întrebării.

Eu văd doar critici, și, prin urmare, da un exemplu, a modului de a afla
disponibilitatea unei unități de rețea:
Dar el și de exemplu:

tip
PNetResourceArray = ^ TNetResourceArray;
TNetResourceArray = array [0..MaxInt div sizeof (TNetResource) - 1] din TNetResource;

EnumResources Procedură (LpNR: PNetResource);
var
NetHandle: THandle;
BufSize: Integer;
Dimensiune: Integer;
NetResources: PNetResourceArray;
Count: Integer;
NetResult: Integer;
I: Integer;
NewItem: TListItem;
începe
Dacă WNetOpenEnum (
RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
// RESOURCETYPE_ANY - toate resursele
// RESOURCETYPE_DISK - roți
// RESOURCETYPE_PRINT - Imprimante
0
LpNR,
NetHandle) <> NO_ERROR
apoi se va închide;
încerca
BufSize: = 50 * sizeof (TNetResource);
GetMem (NetResources, BufSize);
încerca
în timp ce adevărații
începe
Count: = -1;
Dimensiune: = BufSize;
NetResult: = WNetEnumResource (NetHandle, Count, NetResources, Size);
Dacă NetResult = ERROR_MORE_DATA atunci
începe
BufSize: = Dimensiune;
ReallocMem (NetResources, BufSize);
Continuă;
se încheie;
dacă NetResult <> NO_ERROR apoi Exit;
Pentru I: = 0 până la 1 Count-do
începe
Cu NetResources ^ [I] fac
începe
Dacă RESOURCEUSAGE_CONTAINER =
(DwUsage și RESOURCEUSAGE_CONTAINER)
atunci
EnumResources (@ NetResources ^ [I]);
Dacă dwDisplayType = RESOURCEDISPLAYTYPE_SHARE Atunci
// ^^^^^^^^^^^^^^^^^^^^^^^^^ - resursă
// RESOURCEDISPLAYTYPE_SERVER - calculator
// RESOURCEDISPLAYTYPE_DOMAIN - Grupul de lucru
// RESOURCEDISPLAYTYPE_GENERIC - Rețeaua
începe
NewItem: = Form1.ListView1.Items.Add;
NewItem.Caption: = LpRemoteName;
End;
End;
End;
End;
în cele din urmă
FreeMem (NetResources, BufSize);
se încheie;
în cele din urmă
WNetCloseEnum (NetHandle);
se încheie;
End;

Procedura TForm1.Button1Click (Expeditor: TObject);
var
OldCursor: TCursor;
începe
OldCursor: = Screen.Cursor;
Screen.Cursor: = crHourGlass;
Cu ListView1.Items do
începe
BeginUpdate;
Clear;
EnumResource (zero);
EndUpdate;
End;
Screen.Cursor: = OldCursor;
se încheie;

Oamenii, plz ajutor. Acum, există o mică problemă - trebuie să verificați dacă cota de rețea de pe înregistrare, nu este încercarea de a crea un nou fișier este disponibil. există nici o soluție la această problemă?

Memorie: 0,75 MB
Timpul: 0,036 c