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, 1487 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...