Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Abfrage ob Word-Dokument passwortgeschützt ist (vb.net, VB2010Express)

Frage Entwicklung Visual Studio

Mitglied: ahstax

ahstax (Level 2) - Jetzt verbinden

18.08.2014, aktualisiert 20.08.2014, 1598 Aufrufe, 3 Kommentare, 2 Danke

Hallo,

gibt es in vb.net eine Möglichkeit zu prüfen, ob ein zu öffnendes Word-Dokument passwortgeschützt ist?

Neugierige Grüße,
Andreas
Mitglied: colinardo
LÖSUNG 18.08.2014, aktualisiert 20.08.2014
Hallo Andreas,
wenn es um ein Passwort geht das zum Öffnen des Dokumentes benötigt wird, könntest du es über einen Umweg so machen: Das "Dummypassword" kannst du bei jedem Öffnen eines Dokumentes mit übergeben, nicht passwortgeschützte Dokumente ignorieren den Parameter.
01.
Function isProtected(ByVal path As String) As Boolean 
02.
    Dim objWord As New Word.Application 
03.
    Try 
04.
        Dim doc As Document = objWord.Documents.Open(path, , , , "dummypassword") 
05.
    Catch ex As System.Runtime.InteropServices.COMException 
06.
        If ex.ErrorCode = "-2146822880" Then 
07.
            'Dokument ist Passwortgeschützt 
08.
            Return True 
09.
        End If 
10.
    End Try 
11.
    objWord.Quit() 
12.
    Return False 
13.
End Function
Eine einfache Methode zu erkennen ob ein File geschützt ist oder nicht, ohne das File zu öffnen, ist mir persönlich nicht bekannt. Du müsstest das dann anhand der RAW-Struktur der Word-Dokumente analysieren. Beim OpenXML Format wäre das kein Problem, da ungeschützte Files die "ZIP-Signatur" besitzen, geschützte nicht. Um auch Office 97-2003 Dokumente zu berücksichtigen wäre dies vermutlich aufwändiger.

Grüße Uwe
Bitte warten ..
Mitglied: ahstax
20.08.2014 um 12:12 Uhr
Hallo,

vielen Dank für die Hinweise!!!
Aus irgendeinem Grund hat es mit dem Code von Uwe leider nicht funktioniert.
Ich habe noch etwas anderes gefunden, s.u., womit es für meine Zwecke soweit ganz gut klappt. Ich verwende den Code zwar nur für Word-Dokumente, wenn ich es richtig verstehe, soll aber wohl für alle Dateiformate funktionieren.
Quelle
01.
Public Function AnyFileIsPassworded(ByVal file__1 As String) As Boolean 
02.
  Dim bytes = File.ReadAllBytes(file__1) 
03.
  Return AnyFileIsPassworded(bytes) 
04.
  Return False 
05.
End Function 
06.
 
07.
Public Function AnyFileIsPassworded(ByVal bytes As Byte()) As Boolean 
08.
  Dim prefix = System.Text.Encoding.Default.GetString(bytes.Take(2).ToArray()) 
09.
  If prefix = "PK" Then 
10.
    'ZIP and not password protected 
11.
    Return False 
12.
  End If 
13.
  If prefix = "ÐÏ" Then 
14.
    'Office format. 
15.
    'Flagged with password 
16.
    If bytes.Skip(&H20C).Take(1).ToArray()(0) = &H2F Then 
17.
      Return True 
18.
    End If 
19.
    'XLS 2003 
20.
    If bytes.Skip(&H214).Take(1).ToArray()(0) = &H2F Then 
21.
      Return True 
22.
    End If 
23.
    'XLS 2005 
24.
    If bytes.Skip(&H20B).Take(1).ToArray()(0) = &H13 Then 
25.
      Return True 
26.
    End If 
27.
    'DOC 2005 
28.
    If bytes.Length < 2000 Then 
29.
      Return False 
30.
    End If 
31.
    'Guessing false 
32.
    Dim start = System.Text.Encoding.Default.GetString(bytes.Take(2000).ToArray()) 
33.
    'DOC/XLS 2007+ 
34.
    start = start.Replace(vbNullChar, " ") 
35.
    If start.Contains("E n c r y p t e d P a c k a g e") Then 
36.
      Return True 
37.
    End If 
38.
    Return False 
39.
  End If 
40.
 
41.
  'Unknown. 
42.
  Return False 
43.
End Function
Grüße,
Andreas
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Zone.identifier bei passwortgeschützten Office- Dokumenten
Frage von HillebrandMicrosoft Office3 Kommentare

Hallo, die Sicherheitsmechanismen bei Microsoft finde ich ja prinzipiell eine gute Sache. Klar kann es nervig sein, einen zusätzlichen ...

Visual Studio
Vb.net Datenfelder aus Word 2003 Dokument auslesen
Frage von Herbrich19Visual Studio3 Kommentare

Hallo, Ich habe Netzwerkfreigabe mit Word Dokumenten (2003 / DOC), diese beinhalten Datenfelder. Diese würde ich gerne mit einen ...

Basic
Mit vb.net PDF in Word-Dok einfügen
gelöst Frage von ahstaxBasic10 Kommentare

Hallo, Ich suche Hinweise und Beispiele, wie man mit einem vb.net-Programm alle Seiten eines PDF-Doks in ein Word-Dok einfügen ...

Visual Studio
Srv records aus dem dns abfragen unter vb.net
Frage von Herbrich19Visual Studio14 Kommentare

Hallo, Ich würde gerne unter vb.net srv dns einträge für mein eigenes Netzwerk Protokoll abfragen. Ich bin gerade dabei ...

Neue Wissensbeiträge
Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 6 MinutenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless10 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Wieso kann ich den UPD 7000-9000 nicht freigeben?
Frage von Jayk0bRouter & Routing8 Kommentare

Router: Telekom W 723V Ports: UDP 7000-9000 Können nicht frei gegeben werden. Benutzgrund: Rocket League 7000 – 9000 UDP ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing8 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...