Avatar billede dingemann Novice
31. marts 2009 - 10:45 Der er 1 løsning

UnauthorizedAccsssException på fileread

Selve problemet bunder tilbage i en recovery af nogle synkroniserede filer. Siden disse filer fra CSC-mappen i Windows er uden extension skal der gættes exetension. Til formålet har jeg fundet http://www.netomatix.com/products/documentmanagement/mimedetector.aspx?c=f, hentet kildekoden ned og implementeret den i en solution hvor jeg også har en iterator der kører et bibliotek og dets subbiblioteker igennem. Hver eneste fil-path bliver sendt til MIME-gætteren.

Problemet er så her at jeg kan ikke kan opnå adgang til filerne. Jeg får en underlig UnauthorizedAccessException når jeg forsøger at sende fil-pathen ind i funktionen til MIME-gætteren.
Det skal måske siges at MIME-gætteren er et C#-projekt og at injection-koden er C# som jeg har skrevet om til VB.NET

Følgende kode er orginal (som også kan findes på linket):

    MimeTypes g_MimeTypes = new MimeTypes("mime-types.xml");
    sbyte [] fileData = null;
    using (System.IO.FileStream srcFile =
        new System.IO.FileStream(strFile, System.IO.FileMode.Open))
    {
        byte [] data = new byte[srcFile.Length];
        srcFile.Read(data, 0, (Int32)srcFile.Length);
        fileData = Winista.Mime.SupportUtil.ToSByteArray(data);
    }
    MimeType oMimeType = g_MimeTypes.GetMimeType(fileData);


... og følgende er min VB.NET-kode der giver UnauthorizedAccessExeception

Imports Winista
Imports System.IO
Public Class MIMEDetectInterface
    Public Function detectingMIME(ByVal strFile As String) As Mime.MimeType
        Try
            Dim g_MimeTypes As Mime.MimeTypes = New Mime.MimeTypes("mime-types.xml")
            Dim fileData() As System.SByte = Nothing
            Dim srcFile As System.IO.FileStream = New System.IO.FileStream(strFile, System.IO.FileMode.Open)
            Dim data() As Byte = New Byte(srcFile.Length) {}
            srcFile.Read(data, 0, CType(srcFile.Length, Int32))
            fileData = Winista.Mime.SupportUtil.ToSByteArray(data)
            Dim oMimeType As Mime.MimeType = g_MimeTypes.GetMimeType(fileData)
            Return oMimeType
        Catch ex As UnauthorizedAccessException
            MsgBox(ex.Message)
        Catch s As Exception
            MsgBox(s.ToString)
        End Try
    End Function
End Class

...hvoraf det er linjen Dim srcFile As System.IO.FileStream = New System.IO.FileStream(strFile, System.IO.FileMode.Open) der giver en Access to the path <sti> is denied.

Jeg har prøvet at tilføje FileAccess.ReadWrite, FileShare.ReadWrite efter FileMode.Open men det hjælper ikke. Jeg har været i app.manifest og ændret level til level="requireAdministrator". Jeg har slået UAC fra på min Vista da jeg hader det, men det burde vel ikke ha så meget at gøre med noget.

Nogen ideer?
Avatar billede dingemann Novice
18. april 2009 - 10:51 #1
lukker
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