Avatar billede dna Nybegynder
27. oktober 2003 - 23:56 Der er 11 kommentarer og
2 løsninger

Størrelse på en mappe + NTFS spørgsmål.

Hejsa alle..

Er gået igang med den dejlige verden indenfor VB.NET, og har nogle spørgsmål, som jeg håber I kan hjælpe lidt med. :D

1. Jeg vil gerne kunne se hvor meget junk der ligger i en bestemt mappe. (Filer og undermapper) - kan dette gøres uden at gennemløbe hver enkelt mappe og lede efter filer og undermapper (osv)?

2. Jeg kunne godt tænke mig at styre NTFS permissions fra en applikation. Nogen der har erfaring med dette, eller nogen input omkring det? Sådan at jeg kan oprette en mappe og så sætte hvem der må have adgang?

30 point pr. spørgsmål!

På forhånd tak.
dna
Avatar billede bufferzone Praktikant
28. oktober 2003 - 08:49 #1
1. Nej og du er faktisu ude i et indygget problem i ntfs. Ntfs har en begrændsning på 256 bogstaver i stiens længde. Det betyder at du kan gøre følgende hvis du vil skjule noget fra f.eks. administratoren eller en virusscanner.

Først laver du et antal mapper i mapper i mapper så den samlede længde af stien bliver 256 karakterer. herefter subst'er du denne sti med et drevbogstav, hvorefter du laver nogle flere mapper i mapper i mapper. Den praktiske længde af mappesiten vil nu være mere end 256, hvorfor den ikke kan læses umiddelbart og indholdet i de nederste mapper se skjuldt for dig og din virusscanner. Prøv selv at lege med det

2. Deet kan du med forskellige værktøjer. Kik f.eks. på Dameware fra www.dameware.dk genialt værktøj til fjernadministration
Avatar billede dna Nybegynder
28. oktober 2003 - 09:36 #2
hej bufferzone

Hvis jeg tager en mappe ... lad os sige... "c:\windows" i min stifinder og højreklikker og vælger egenskaber! Så beregner den lige indholdet (antal MB) af alle mapper + undermapper! Det er sådan en funktion jeg gerne vil have. Er det stadig et problem? (Jeg tror dog ikke at jeg får nogen sti med mere end 256 tegn)

Ang. dit svar til spørgsmål 2 - så er det noget jeg gerne selv vil lave. Alt i alt er det vel ikke fordi jeg har det store behov (behøver købe software) - bare fordi jeg gerne vil lege lidt med VB.NET.

Man bliver jo kun klogere/bedre af at lege med det!

dna
Avatar billede arne_v Ekspert
28. oktober 2003 - 20:43 #3
re 1)

Man kan altid løbe igennem alle directories og filer og tælle op.

Eksempel:

Imports System
Imports System.IO

Module Main
    Sub Main()
        Console.WriteLine(total("C:\WINNT"))
    End Sub
    Function total(dir As String) As Integer
        Dim res As Integer = 0
        Dim i As Integer
        Dim d As DirectoryInfo = new DirectoryInfo(dir)
        Dim allf As FileInfo() = d.GetFiles()
        For i = 0 To allf.Length - 1
            res = res + allf(i).Length
        Next
        Dim alld As DirectoryInfo() = d.GetDirectories()
        For i = 0 To alld.Length - 1
            res = res + total(alld(i).FullName)
        Next
        total = res
    End Function
End Module
Avatar billede arne_v Ekspert
28. oktober 2003 - 20:59 #4
re 2)

Kan ikke umiddelbart lade sig gøre.

.NET har ikke funktionaliteten.

Man kan f.eks. kalde Win32 API fra VB.NET, men ...

Der er lidt info her:

http://www.dotnet247.com/247reference/msgs/24/123615.aspx
Avatar billede bufferzone Praktikant
28. oktober 2003 - 21:05 #5
arne_v>prøv at lave forsøget jeg beskriver med en sti på mere end 256 karaktere (subst og bug videre) den cil du ikke kunne tælle op, uden først at subst den første del at stien og derefter også tælle anden del op og lægge disse to tal sammen
Avatar billede arne_v Ekspert
28. oktober 2003 - 21:26 #6
Hvad er pointen ?

Spørger leder efter kode som kan beregne den totale størrelse af et directory
ligesom windows explorer kan med højreklik og properties.

Det har jeg svaret på.

At der er et problem med stier længere end 256 må være det samme for
Windows Explorer og VB.NET - og formentlig irrelevant på langt de
fleste PC'ere !
Avatar billede dna Nybegynder
28. oktober 2003 - 22:14 #7
Arne_v: Tak for svaret.. kigger på det i morgen!

Og dvs.. Hvis en given sti er mere end 256 tegn ... så kan man gemme filer der?! Kan man også det i en explorer ?

dna
Avatar billede bufferzone Praktikant
28. oktober 2003 - 22:20 #8
arne v>du kan ikke se pointen og det er jo helt fair, jeg undskylder meget at jeg har spildt din tid, det vil jeg undgå i fremtiden.

dna>det er noget af pointen, det kan du nemlig ikke umiddelbart. denne metode bruges bl.a. af hackere til at skjule filer for administratore, scanne programmer og andet. Du kan med andre ord komme i en situation, hvor du ikke kan få det rette tal, uden manuelt at skulle lave nogle ting
Avatar billede arne_v Ekspert
28. oktober 2003 - 22:26 #9
bufferzone>

Har du bemærket kategorien ?
Avatar billede dna Nybegynder
28. oktober 2003 - 23:10 #10
bufferzone: Hvad er løsningen så på problemet? (Hvis der er en?)
Avatar billede arne_v Ekspert
29. oktober 2003 - 06:52 #11
Iøvrigt ved mere end 2 GB brug:

Function total(dir As String) As Long
        Dim res As Long = 0
Avatar billede dna Nybegynder
02. november 2003 - 20:34 #12
Takker til jer begge!
Arne for koden... og buffer for noget at tænke over!

Håber stadig at nogen ville kunne finde noget jeg kunne arbejde på med hensyn til spørgsmål 2!

dna
Avatar billede arne_v Ekspert
02. november 2003 - 20:36 #13
Du kunne ikke bruge det link jeg gav ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester