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?