ResX-Datei aus dem Internet programmatisch "zulassen"

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von TRiViUM.

    ResX-Datei aus dem Internet programmatisch "zulassen"

    Hallo liebe Community,

    wenn man ein Projekt aus dem Internet läd und es öffnet, lässt es sich meist nicht auf Anhieb kompilieren.
    Das liegt dann oft daran, dass VS erkannt hat, dass das Projekt aus dem Internet stammt und man es deshalb erstmal "zulassen" muss.
    Dies geht bekanntlicher Weise in den Eigenschaften bei allen ResX-Dateien:



    Meine Frage ist; Gibt es eine Möglichkeit, diesen Haken mit dem .Net-Framework zu setzen ?

    Danke :)
    Hallo,
    auf die Schnelle habe ich folgenden Blog-Eintrag gefunden Programmatically Unblocking Downloaded Files – Engram 404, der auch ein wenig Erklärung gibt.

    Mit dem PowerShell-Befehl Unblock-File lässt sich das ganze aber sehr viel schneller erreichen, ohne groß programmieren zu müssen. So kann man auch sehr fix einen Ordner (auch mit Unterordnern) entsperren

    Quellcode

    1. Get-ChildItem -Path 'Pfad\zum\Ordner' -Recurse | Unblock-File
    In VB.NET musst Du dafür den ZoneIdentifier löschen:

    VB.NET-Quellcode

    1. 'das hier brauchst Du
    2. <DllImport("kernel32.dll", CharSet:=CharSet.Unicode, SetLastError:=True)> Private Shared Function DeleteFile(FileName As String) As Boolean : End Function
    3. Private Sub RemoveZoneIdentifierFrom(File As IO.FileInfo)
    4. DeleteFile(File.FullName & ":Zone.Identifier")
    5. End Sub
    6. 'zum Prüfen, ob die Datei aus einem unsicheren Bereich kommt
    7. <DllImport("kernel32.dll", CharSet:=CharSet.Ansi, SetLastError:=True)> Private Shared Function OpenFile(<MarshalAs(UnmanagedType.LPStr)> FileName As String, ByRef lpReOpenBuff As OFSTRUCT, wStyle As Integer) As Integer : End Function
    8. <StructLayout(LayoutKind.Sequential)>
    9. Public Structure OFSTRUCT
    10. Public cBytes As Byte
    11. Public fFixedDisc As Byte
    12. Public nErrCode As UInt16
    13. Public Reserved1 As UInt16
    14. Public Reserved2 As UInt16
    15. <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=128)>
    16. Public szPathName As String
    17. End Structure
    18. Private Structure FileDataPack
    19. Public cBytes As Byte
    20. Public fFixedDisk As Byte
    21. Public nErrCode As Integer
    22. Public Reserved1 As Integer
    23. Public Reserved2 As Integer
    24. Public szPathName() As Byte
    25. End Structure
    26. Private Function FileHasDownloadSign(ProjectFilePath As IO.FileInfo) As Boolean
    27. Dim FileDataPack As OFSTRUCT = Nothing
    28. Return OpenFile(ProjectFilePath.FullName & ":Zone.Identifier", FileDataPack, &H4000) = 1
    29. End Function
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @ISliceUrPanties: Gut zu wissen, dass es überhaupt mit Bordmitteln geht, danke für Deinen Hinweis :thumbup:
    Leider bin ich mir nicht sicher, ob auf den entsprechenden Systemen Powershell aktiviert ist, weshalb ich nach einer .Net-Variante gesucht hatte.

    Edit: Hab den von Dir beschriebenen Artikel wohl nicht bis zum Ende durchgescrollt...da ist ja auch etwas mit dem Framework beschrieben... :rolleyes:

    @VaporiZed: Das kommt dem ganzen schon verdammt nah und jetzt weiß ich auch endlich, wie das "Attribut" (Zone.Identifier) heißt :D
    Okay, ist zwar keine .Net-Funktion, aber das werde ich mal implementieren, vielen Dank :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TRiViUM“ ()