Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 1569 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
Visual Studio
Vb.net Datenfelder aus Word 2003 Dokument auslesen (3)

Frage von Herbrich19 zum Thema Visual Studio ...

Basic
gelöst Mit vb.net PDF in Word-Dok einfügen (10)

Frage von ahstax zum Thema Basic ...

Visual Studio
Srv records aus dem dns abfragen unter vb.net (14)

Frage von Herbrich19 zum Thema Visual Studio ...

Microsoft Office
gelöst Word Rechtschreibprüfung funktioniert in EINIGEN Dokument nicht (2)

Frage von KMP1988 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(2)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Netzwerkgrundlagen
Kann auf Freigabe nicht Zugreifen (19)

Frage von leon123 zum Thema Netzwerkgrundlagen ...

Windows Server
gelöst Neues KB für W10 1607 und W2K16 wieder mal nicht im WSUS 3.0, hat das noch jemand? (16)

Frage von departure69 zum Thema Windows Server ...

Windows Server
DC virtualisieren + wie sichern (SingleDC-Environment) (12)

Frage von KMUlife zum Thema Windows Server ...

Festplatten, SSD, Raid
RAID Controller mit Trim-Funktion, wie ermitteln (11)

Frage von pixel24 zum Thema Festplatten, SSD, Raid ...