beta-release-1.0.0
This commit is contained in:
parent
ed658ddf82
commit
77e6e6802b
132
Program.cs
Normal file
132
Program.cs
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
// See https://aka.ms/new-console-template for more information
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO.Compression;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Xml;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
static string[] ExtensionList = {
|
||||||
|
// WORD
|
||||||
|
"docm",
|
||||||
|
"docx",
|
||||||
|
"dotm",
|
||||||
|
"dotx",
|
||||||
|
// EXCEL
|
||||||
|
"xlsm",
|
||||||
|
"xltx",
|
||||||
|
"xltm",
|
||||||
|
"xlsx",
|
||||||
|
// POWERPOINT
|
||||||
|
"potm",
|
||||||
|
"potx",
|
||||||
|
"pptm",
|
||||||
|
"pptx"
|
||||||
|
};
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
//args = [".\\bin\\Debug\\net8.0\\Testx.docx"];
|
||||||
|
//args.Append(".\\bin\\Debug\\net8.0\\Testx.docx");
|
||||||
|
foreach (String a in args)
|
||||||
|
{
|
||||||
|
Console.WriteLine(a);
|
||||||
|
switch (a)
|
||||||
|
{
|
||||||
|
case "--help":
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
bool extFound = false;
|
||||||
|
foreach (String ext in ExtensionList)
|
||||||
|
{
|
||||||
|
if (a.Contains("." + ext))
|
||||||
|
{
|
||||||
|
extFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (extFound)
|
||||||
|
{
|
||||||
|
removePW(a);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//Console.WriteLine(a);
|
||||||
|
}
|
||||||
|
Console.ReadLine();
|
||||||
|
|
||||||
|
}
|
||||||
|
private static void removePW(string FilePath)
|
||||||
|
{
|
||||||
|
string Path = AppContext.BaseDirectory;
|
||||||
|
Console.WriteLine(Path);
|
||||||
|
|
||||||
|
Directory.CreateDirectory(Path + "\\temp");
|
||||||
|
|
||||||
|
string openPath = FilePath;
|
||||||
|
string extractPath = Path + "\\temp\\tmp_file.xml";
|
||||||
|
|
||||||
|
string filepath_woe = FilePath.Substring(0, FilePath.Length - 5);
|
||||||
|
string filepath_ext = FilePath.Substring(FilePath.Length - 5);
|
||||||
|
string TMP_FILE = filepath_woe + "_noProtection" + filepath_ext;
|
||||||
|
|
||||||
|
string SettingsFileName = "";
|
||||||
|
|
||||||
|
using (FileStream zipToOpen = new FileStream(openPath, FileMode.Open))
|
||||||
|
{
|
||||||
|
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read, false))
|
||||||
|
{
|
||||||
|
foreach (ZipArchiveEntry entry in archive.Entries.Where(e => e.FullName.Contains("settings.xml")))
|
||||||
|
{
|
||||||
|
|
||||||
|
if (File.Exists(extractPath))
|
||||||
|
{
|
||||||
|
File.Delete(extractPath);
|
||||||
|
}
|
||||||
|
SettingsFileName = entry.FullName;
|
||||||
|
entry.ExtractToFile(extractPath);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string text = File.ReadAllText(extractPath);
|
||||||
|
|
||||||
|
string pattern = @"<w:documentProtection ([A-z0-9 ="":+\/]*)>";
|
||||||
|
string substitution = @"";
|
||||||
|
RegexOptions options = RegexOptions.Multiline;
|
||||||
|
|
||||||
|
Regex regex = new Regex(pattern, options);
|
||||||
|
string result = regex.Replace(text, substitution);
|
||||||
|
|
||||||
|
File.WriteAllText(Path + "\\temp\\settings.xml", result);
|
||||||
|
|
||||||
|
File.Copy(openPath, TMP_FILE);
|
||||||
|
using (FileStream zipToOpen = new FileStream(TMP_FILE, FileMode.Open))
|
||||||
|
{
|
||||||
|
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update, false))
|
||||||
|
{
|
||||||
|
ZipArchiveEntry tmp = null;
|
||||||
|
foreach (ZipArchiveEntry entry in archive.Entries.Where(e => e.FullName.Contains("settings.xml")))
|
||||||
|
{
|
||||||
|
tmp = entry;
|
||||||
|
}
|
||||||
|
tmp.Delete();
|
||||||
|
//ZipArchiveEntry readmeEntry = archive.CreateEntry("word/settings.xml", CompressionLevel.Fastest);
|
||||||
|
ZipArchiveEntry readmeEntry = archive.CreateEntry(SettingsFileName, CompressionLevel.Fastest);
|
||||||
|
using (StreamWriter writer = new StreamWriter(readmeEntry.Open()))
|
||||||
|
{
|
||||||
|
writer.Write(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
File.Delete(extractPath);
|
||||||
|
File.Delete(Path + "\\temp\\settings.xml");
|
||||||
|
Console.WriteLine("Doc unprotected | Dateibearbeitungspasswortschutz entfernt");
|
||||||
|
Console.WriteLine("New File | Neue Datei: "+TMP_FILE);
|
||||||
|
Console.WriteLine("press Enter to close | Eingabetaste drücken zum Schließen");
|
||||||
|
}
|
||||||
|
}
|
10
removePW.csproj
Normal file
10
removePW.csproj
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
25
removePW.sln
Normal file
25
removePW.sln
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.5.002.0
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "removePW", "removePW.csproj", "{8211AE5B-96EA-4494-9C6A-2040FDA13F43}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{8211AE5B-96EA-4494-9C6A-2040FDA13F43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{8211AE5B-96EA-4494-9C6A-2040FDA13F43}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{8211AE5B-96EA-4494-9C6A-2040FDA13F43}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{8211AE5B-96EA-4494-9C6A-2040FDA13F43}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {B8EA5858-ED93-46BC-AE1A-AB9A1D9C5C2D}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
Loading…
Reference in New Issue
Block a user