Neues Feature beim IML-Backup: Hooks

Donnerstag, 13. Oktober, 2022

Nachdem vor 2 Wochen das Prune und Verify separat ausführbar und konfigurierbar wurden, gibt es nun ein weiteres Feature: Hooks.

Das Backup läuft wie folgt ab

  • Initialisierung
  • Start der Backups der lokalen Datenbanken (z.B. Mysql, Sqlite)
  • Backup der definierten lokalen Verzeichnisse
  • Prune (Ausdünnen und Löschen alter Backup-Daten)
  • Verify

Die Hooks dienen zum Starten von eigenen Skripten … vor dem Start des Backups und danach sowie auch an mehreren Punkten während des Backups.

Es gibt initial diese Verzeichnisse, die du Skripte ablegen kannst, um sie zu definierten Zeitpunkten zu starten:

> tree -d hooks/
hooks/
|-- 10-before-backup
|   `-- always
|-- 12-before-db-service
|   `-- always
|-- 14-before-db-dump (UNUSED)
|   `-- always
|-- 16-after-db-dump (UNUSED)
|   |-- always
|   |-- on-error
|   `-- on-ok
|-- 18-after-db-service
|   |-- always
|   |-- on-error
|   `-- on-ok
|-- 20-before-transfer
|   `-- always
|-- 22-before-folder-transfer
|   `-- always
|-- 24-after-folder-transfer
|   |-- always
|   |-- on-error
|   `-- on-ok
|-- 26-after-prune
|   |-- always
|   |-- on-error
|   `-- on-ok
|-- 28-after-verify
|   |-- always
|   |-- on-error
|   `-- on-ok
`-- 30-post-backup
    |-- always
    |-- on-error
    `-- on-ok

34 directories

Als am ehesten einleuchtende Beispiele:

  • Vor dem Start des Backups kann man Sachen lokal synchronisieren, die ebenfalls ins Backup einfliessen sollen.
  • Nach dem Backup kann man beispielsweise Notifikationen ins Monitoring oder per E-mail auslösen.

Bei “nach einer Aktion” zu startenden Hooks kann man jeweils getrennte Sets von Skripten starten, sobald eine Aktion OK war … oder aber fehlerhaft … oder aber auch immer (unabhängig vom Status).

Und wie ist es implementiert? Schauen wir mal auf die Bash-Interna.

Es gibt zu den definierten Zeitpunkten im Skript einen Aufruf einer Hook-Funktion - mit dem Hook-Verzeichnis als Namen als Parameter 1 und für “nach einer Aktion” zu startende Hooks den Exitcode als optionalen 2. Parameter. Als willkürliches Beispiel:

_j_runHooks "24-after-folder-transfer" "$myrc"

Die Hookfunktion ruft bei Exitcode 0 die Skripte im “on-ok” Untrverzeichnis - und bei Exitcode > 0 jene vom “on-error”. Anschliessend (oder bei Aufruf ohne einen Exitcode) werden vom jeweiligen Hook die Skripte im Unterverzeichnis “always” verarbeitet.
Die Ausführung der Skripte erfolgt in alphabetischer Reihenfolge - mit der Benamung kann man also die Abfolge der Abarbeitung mehrerer Skripte beeinflussen.

Die Hookfunktion sieht so aus (genaugenommen erschreckend einfach):

...
# ------------------------------------------------------------
# execute hook skripts in a given directory in alphabetic order
# param  string   name of hook directory
# param  string   optional: integer of existcode or "" for non-on-result hook
# ------------------------------------------------------------
function _j_runHooks(){
  local _hookbase="$1"
  local _exitcode="$2"
  local _hookdir="$( dirname $0 )/hooks/$_hookbase"

  if [ -z "$_exitcode" ]; then
    _hookdir="$_hookdir/always"
  elif [ "$_exitcode" = "0" ]; then
    _hookdir="$_hookdir/on-ok"
  else
    _hookdir="$_hookdir/on-error"
  fi
  for hookscript in $( ls -1a "$_hookdir" | grep -v "^." | sort )
  do
    if [ -x "$_hookdir/$hookscript" ]; then
      h3 "HOOK: start $_hookdir/$hookscript ..."
      $_hookdir/$hookscript
    else
      h3 "HOOK: SKIP $_hookdir/$hookscript (not executable) ..."
    fi
  done

  # if an exitcode was given as param then run hooks without exitcode 
  # (in subdir "always")
  if [ -n "$_exitcode" ]; then
    _j_runHooks "$_hookbase"
  fi

  echo
}
...

weiterführende Links:

  1. IML OS Docs - IML Backup: Hooks (en)
  2. IML OS Docs - IML Backup: Startseite (en)

Restic client auf 64 Bit Linux installieren

Mittwoch, 28. April, 2021

Restic [1] ist ein in Go geschriebenes Backup-Tool für die Kommandozeile … oder zum Skripten. Es besteht aus einem einzigen Binary und hat keinerlei Abhängigkeiten zu Libs, Paketen oder irgendwas. Es erzeugt dedulizierte Backups: initial wird ein Vollbackup gemacht und dann nie wieder - es braucht dann nur noch inkrementelle Backups. Restic gibt es für Windows/ Mac/ Linux und diverse Plattformen (BSD, Solaris, Mips, … - siehe Releases (dort etwas scrollen :-) [2]).

Das hat was.

Daheim werfe ich gerade einen Http-Server als Backup-Endpoint auf die Synology [3].

Auf Systeme am Institut habe ich grob 150 Linux-Systeme - mit altem und neuen Linux Varianten verschiedener Distributionen. Ich habe ein Bash Skript geschrieben, das mit wget das Binary des Restic Client holt, entpackt und ins /usr/bin legt. Wer es für ein anderes OS oder Architektur braucht, müsste den Suffix “_linux_amd64” ersetzen … oder aber auch dynamisch machen (mit

uname -a

könnte man hinkommen).

#!/usr/bin/env bash

# ------------------------------------------------------
# CONFIG
# ------------------------------------------------------
resticversion=0.12.0
doLink=0

installdir=/usr/bin
resticfile=restic_${resticversion}_linux_amd64
downloadfile=${resticfile}.bz2
downloadurl=https://github.com/restic/restic/releases/download/v${resticversion}/${downloadfile}

# ------------------------------------------------------
# MAIN
# ------------------------------------------------------
echo
echo "##### INSTALL RESTIC CLIENT into $installdir #####"
echo

echo ----- DOWNLOAD
if [ ! -f "${downloadfile}" ]; then
         wget -O "${downloadfile}.running" -S "${downloadurl}" 
                 && mv "${downloadfile}.running" "${downloadfile}"

else
         echo SKIP download
fi
echo

echo ----- UNCOMPRESS
bzip2 -d "${downloadfile}"
echo

echo ----- INSTALL
mv "${resticfile}" "${installdir}"
chmod 755 "${installdir}/${resticfile}"
rm -f "${installdir}/restic" 2>/dev/null
test $doLink -eq 0 || ln -s "${installdir}/${resticfile}" "${installdir}/restic"
test $doLink -eq 0 && mv "${installdir}/${resticfile}" "${installdir}/restic"

echo
echo ----- SELF-UPDATE
restic self-update
echo
echo ----- RESULT:
test $doLink -eq 0 || ls -l "${installdir}/${resticfile}" 
ls -l "${installdir}/restic"
echo
echo ----- CURRENT VERSION:
restic version
echo
echo ----- DONE

weiterführende Links:

  1. https://restic.net/ Homepage von Restic
  2. Github: Restic Releases
  3. Github: Skript zur Installation eines Restic Http Servers auf einer Synology

Aomei - Backupsets zurückholen

Montag, 7. Dezember, 2020

Mein Windows 10 war auf dem Stand 1804 und streikte beim Upgrade auf einen neueren Release. Ich habe irgendwann aufgegeben. Auf meinen Multiboot USB Stick kam das Windows 10 ISO und ich habe darüber ein “Update” gemacht. Das bisherige Windows, Programme und Benuterdaten landen in einem Ordner namens “Windows.old” - und man bekommt ein frisches Windows 10 drauf. Inkl. neuem Benutzer, ohne installierte Programme.
Man kann im “Windows.OLD” etwas spicken, welche Programme drauf waren und auch seine Benutzerdaten, Dokumente, whatever kopieren.

Als Backup nutze ich AOMEI Backup. Nach dessen Installation gab es keinerlei Backup-Sets. Falls auch wer mal sucht … man wird fündig unter im Windows.old\Users\All Users\AomeiBR\. Dieser Ordner ist zu kopieren nach

C:\Users\All Users\AomeiBR\

Beim nächsten Start von AOMEI Backup sind die alten Backup-Regeln wieder da.

weiterführende Links:

  1. Microsoft: Windows 10 ISO herunterladen
  2. Aomei Backup

Virtualbox für eine Entwicklungs-Umgebung verwenden

Samstag, 10. Oktober, 2020

Wenn man auf seiner lokalen Maschine entwickelt - aber seinen Code auf mehreren Betriebsystemen - oder unterschiedlichen Software-Versionen - sei es z.B. Programmiersprache (Ruby, NodeJs, PHP) oder Datenbankversion - dann braucht man verschiedene Testsysteme. Der eine mag Docker bevorzugen … ich beschreibe die Variante mit Virtualbox, weil dies über Linux und Windows für Clients als auch Ziel-VMs durchmischt funktioniert.

— Virtualbox.

Virtualbox ist kostenlos und OpenSource. Es existiert für Windows, Mac, Linux und Solaris.

In der Virtualbox habe ich je 1 VM mit einer Linux-Instanzen installiert (Debian, CentOS). In der VM ist das Setting installiert, was ich zum Testen heranziehen möchte.

  • Zum einen SSH, damit ich von der Konsole auf die VM komme - ohne dass ich über das “Fenster” der VM gehen muss.
  • Und dann Webserver, Programmiersprache, Module, Libraries … und was es sonst auf dem Zielsystem braucht.

— Dateien der Applikation

Was hingegen NICHT in der VM ist, ist die Applikation / Webseite: diese ist lokal bei mir auf dem Rechner. Ich nenne es mal abstrakt: web1.example.com.

[meine Webs]               <<< Basisverzeichnis aller meiner Webseiten
  |
  +-- ...
  +-- web1.example.com     <<< Verzeichnis ist Name der Webseite/ Applikation
  |   |
  |   +-- ...
  |   +-- public_html      <<< jenes public_html ist DOCUMENT_ROOT der Webseite
  |   +-- ...
  +-- ...

Um diese Struktur in einer Virtualbox VM verfügbar zu machen, hat Virtualbox ein Feature der Shared Folders. Das lokale Verzeichnis meiner Webdaten wird dann automatisch ins Linux reingemountet und ist unter /media/sf_[Name]/ sichtbar.

Man könnte nun im Apache Httpd das Web als VHost einrichten und Document_root auf das /media Verzeichnis zeigen lassen. Ich mag es aber, wenn es an einem schönen Ort liegt. Daher lege ich unter /var/www einen Softlink namens web1.example.com an, der auf /media/sf_[Name]/web1.example.com/ zeigt.

Wenn man Linux-Systeme zum Testen braucht - z.B. Debian und CentOS - dann kann man die Apache Config auch lokal halten … und einen Softlink als /etc/apache2/sites-enabled bzw. /etc/httpd/conf.d anlegen.

Mit der lokal installierten IDE meiner Wahl kann ich dann lokal meine Dateien bearbeiten - und mit Speichern habe ich es 1:1 in einer gestarteten VM.

— Dienste

Zum Zugriff per SSH … oder auf das Web muss ich jede laufende VM ansprechen können - auf deren Port 80/ 443 resp 22.
Virtualbox kennt dazu in den Netzwerkeinstellungen der VM das Portmapping.

Es braucht eindeutige Ports, wenn man mehrere VMs laufen lassen und diese parallel ansprechen wollte, z.B. VM 1 leitet SSH von 8022 auf 22 um, VM 2 geht 1000 Ports hoch und leitet 9022 auf 22 um; Port 80 und andere analog SSH Login auf VM 2:

ssh -p 9022 localhost

Und beim Webbrowser? Und mehreren VHosts in der jeweiligen VM?

Man kann sich mit der /etc/hosts behelfen und die Namen der Domain auf 127.0.0.1 zeigen lassen

web1.example.com  127.0.0.1

Im Browser gibt man mit http://web1.example.com:[Port] das jeweilige Web an … und der Port steuert die Anfrage zur gewünschten VM.

Grafisch sieht das Ganze etwa so aus:

2020-10-10-virtualbox-devenv-axel.png

Viel Spass beim Nachbauen!

weiterführende Links:

  1. www.virtualbox.org/ (en)

Bash: Ausführungszeit eines Kommandos in Millisekunden messen

Dienstag, 14. Juli, 2020

Wenn man im Monitoring einen Check schreiben will, der die Antwort-Zeit einer Aktion oder Response eines Servers messen will, sind sekundengenaue Angaben zu grob. Mit dem Kommando

time [Kommando]

kann man sehen, wie lange das jeweilige Kommando brauchte:

$ time ls
[... Liste von Dateien ...]

real    0m0,022s
user    0m0,000s
sys     0m0,015s

Die Gesamtzeit ist in der Zeile real enthalten. Angegeben sind die Minuten, ein “m” und danach die Sekunden mit 3 Nachkommastellen. Wobei die Tausendstel je nach System/ Sprache mit Punkt oder Komma getrennt sein könnten.

Aha, nun muss man “nur” noch die Zeile mit der Angabe “real” in den letzten 3 Zeilen der gesamten Ausgabe suchen und das Ganze parsen.

Als kleines Demo anbei einmal mundgerecht als Funktion (es läuft unter Linux und mit CYGWIN unter MS Windows):

#!/usr/bin/env bash

# ------ FUNCTION

# measure time in ms
# @param  string  command to execute / measure
function getExecTime(){
	local sCommand=$1
	local tmpfile=$( mktemp )

	( time eval $sCommand ) >$tmpfile 2>&1
	local sRealtime=`cat $tmpfile | tail -3 | grep "^real" | awk '{ print $2 }'`
	rm -f $tmpfile

	local iMin=`echo $sRealtime | cut -f 1 -d "m" `
	local iMillisec=`echo $sRealtime | cut -f 2 -d "m" | sed "s#[.,s]##g" | sed "s#^0*##g" `
	typeset -i local iTime=$iMin*60000+$iMillisec
	echo $iTime
}

# ------ MAIN

echo
echo "ZEITMESSUNG IN MILLISEKUNDEN"
echo
mytime=`getExecTime 'ls -ltr'`
echo Dauer: ${mytime} ms

Xampp: Port 3306 belegt - durch Firefox

Mittwoch, 2. Oktober, 2019

Schon komisch: ein Programm krallt sich einen Port. Ich dachte, das wäre die Domäne von Skype.

2019-10-02-xampp-port-3306-durch-firefox-belegt.png

Abhilfe:

  1. Firefox beenden
  2. Mysql im Xampp starten
  3. Firefox starten

Virtualbox: Protocol error beim Mounten der Shared Folders

Mittwoch, 17. April, 2019

In meiner Virtualbox 6.0(.x) Instanz habe ich ein lokales Webentwicklungsverzeichnis mit mehreren Domains von Entwicklungsumgebungen als Shared Folder in eine CentOS VM geteilt. In jener sind die Verzeichnisse als Apache Webroots via /var/www/[Domainname]/public_html/ angesprochen.

Und wie das so bei Computern ist: von einem Tag auf den anderen funktioniert irgendwas nicht mehr. Heute: das Mounten der Verzeichnisse.

Versuch 1:

Ein Reboot der VM … brachte nichts.

Versuch 2:

Shared Folders funktionieren nur, wenn die Gästetools installiert sind. Es hätte ja durch ein OS-Update der VM einen neuen Kernel gegeben haben. Diese habe ich nochmals installiert. Es wurde ein neuer Kernel compiliert… was einen weiteren Reboot brauchte … es geht aber nicht.

Versuch 3:

So kommt man dem Problem dann näher:
Man öffnet die Logs - das geht via dem Icon rechts einer VM (oh, ich hatte beim Umstellung von Virtualbox 5 auf V 6 lange die Sicherungspunkte gesucht :-)) - hier Logs auswählen. Dann erscheinen mehrere Tabs - das erste davon brauchen wir - die VBox.log.

2019-04-17-virtualbox-01-show-logs.png

Darin taucht ein Fehler auf:

00:36:51.618960 ASSERT_GUEST_LOGREL F:\tinderbox\win-rel\src\VBox\HostServices\SharedFolders\mappings.cpp(762) 
... int __cdecl vbsfMapFolder(struct _SHFLCLIENTDATA *,struct _SHFLSTRING *,unsigned short,bool,unsigned int *): 
... pFolderMapping->cMappings == 0 || pFolderMapping->fGuestCaseSensitive == fCaseSensitive
00:36:51.618981 Incompatible case sensitivity setting: C:\data\htdocs: 2 mappings, insenitive, requested senitive!
00:36:51.619183 VMMDev: Guest Log: 06:57:31.461002 automount Error: vbsvcAutomounterMountIt: Failed to mount 
... 'htdocs' on '/media/sf_htdocs': Protocol error (-1,71)

Nach jenem

automount Error: vbsvcAutomounterMountIt: Failed to mount ‘htdocs’ on ‘/media/sf_htdocs’: Protocol error (-1,71)

kann man im Internet micht der Suchmaschine seiner Wahl suchen. Leider wurde ich trotz des Fehlercodes und Wortlaut der Meldung nicht fündig. Das fand ich unlustig. Ich bin also der erste Mensch auf der Welt, der dieses Problem hat :-)

Schauen wir bei den gemeinsamen Ordnern - das hatte ich eingestellt:

2019-04-17-virtualbox-02-shared-folder.png

Was aber klappte:

Ich habe die Shared Folder Defintion gelöscht … rechts das Order Symbol mit dem X … im Log erschien

00:39:53.656135 SharedFolders host service: Removing host mapping 'htdocs'
00:39:53.743943 GUI: UIMediumEnumerator: Medium-enumeration finished!

Dann wurde das zuvor Gelöschte 1:1 wieder eingerichtet.

00:40:26.398568 SharedFolders host service: Adding host mapping
00:40:26.398589     Host path 'C:\data\htdocs', map name 'htdocs', writable, automount=true, automntpnt=, create_symlinks=false, missing=false
00:40:26.452420 GUI: UIMediumEnumerator: Medium-enumeration finished!
00:40:27.403966 VMMDev: Guest Log: 07:01:07.246159 automount vbsvcAutomounterMountIt: Successfully mounted 'htdocs' on '/media/sf_htdocs'

Dies hat er eingerichtet - und sofort war es auch in der VM ohne weiteres Zutun gemountet.
Last but not least habe ich die VM nochmals rebootet, um zu schauen, ob es auch nach einem Neustart noch funktioniert … yep, auch dies ging.

Aomai Backup - Avira meldet darin Adware.Gen2

Montag, 5. Juni, 2017

Nach dem Upgrade von Aomei Backup Pro V3.x auf 4.0 meldete Avira “Adware.Gen2” in der Backupper.exe.
Hm, in einer Freeware mag ja sein, dass da Hersteller so ihren Unfug treiben, um Banner einzublenden oder Sonstwas im System zu verbiegen - aber in der bezahlten Pro-Version?

Wie schafft man Abhilfe?
Auf der Website https://www.virustotal.com habe ich die Exe-Datei hochgeladen - dort wird sie von zig (ca. 60) Virenscannern untersucht.
In dem Fall scheint es ein False Positive - also ein Fehlalarm - zu sein! Also wurde eine Ausnahmeregel definiert.

Ich habe in Avira:

  • unter Echtzeit-Scanner -> Konfiguration -> Echtzeit-Scanner -> Ausnahmen: das Aomei Backup Verzeichnis C:\Program Files (x86)\AOMEI Backupper\ als Ausnahme hinzugefügt
  • unter Quarantäne: bei der Backupper.exe rechte Maustaste und “Objekt wiederherstellen” gewählt.
  • unter Echtzeit-Scanner -> Konfiguration -> Echtzeit-Scanner -> Ausnahmen: das Aomei Backup Verzeichnis C:\Program Files (x86)\AOMEI Backupper\ als Ausnahme entfernt
  • … und die C:\Program Files (x86)\AOMEI Backupper\Backupper.exe als Ausnahme hinzugefügt (also statt des gesamten Verzeichnisses zuvor nur diese eine Datei)

weiterführende Links:

  1. virustotal.com: Ergebnis für die Backupper.exe

Chocolatey - veraltete Programm-Einträge löschen

Montag, 23. Mai, 2016

Problem:

Ich habe mit Chocolatey Programme deinstalliert, z.B.

C:\Users\Axel>choco uninstall Quicktime

Aber dennoch verbleiben einige in der Liste der lokalen Anwendungen:


C:\Users\Axel>choco list -lo

7zip.commandline 16.01
7zip.install 16.01
AdobeAIR 20.0.0.233
autohotkey.portable 1.1.23.07
avirafreeantivirus 14.0.6.552
chocolatey 0.9.9.12
ChocolateyGUI 0.13.2
ConEmu 16.5.15.0
Far 3.0.4242
ffmpeg 3.0.1
flashplayeractivex 21.0.0.242
flashplayerplugin 14.0.0.179
javaruntime 8.0.73
jre8 8.0.91
netbeans-php 8.0
PDFXChangeViewer 2.5.317
Pencil 2.0.3
PowerShell 5.0.10586.20151218
Quicktime 7.7.5   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
SwissFileKnife 1.6.9
sysinternals 2016.04.28
virtualbox 5.0.20.106931
VirtualBox.ExtensionPack 5.0.20.106931
23 packages installed.

Lösung

Man gehe in das Lib Verzeichnis von Chocolatey

C:\Users\Axel>cd "C:\ProgramData\chocolatey\lib"

C:\Program\Data\chocolatey\lib>dir
 Datenträger in Laufwerk C: ist A
 Volumeseriennummer: 4C76-01F1

 Verzeichnis von C:\ProgramData\chocolatey\lib

23.05.2016  21:11    <DIR>          .
23.05.2016  21:11    <DIR>          ..
21.05.2016  13:14    <DIR>          7zip.commandline
21.05.2016  14:30    <DIR>          7zip.install
31.03.2016  23:40    <DIR>          AdobeAIR
21.05.2016  13:15    <DIR>          autohotkey.portable
13.08.2014  20:33    <DIR>          avirafreeantivirus.14.0.6.552
31.03.2016  23:48    <DIR>          chocolatey
17.11.2014  00:21    <DIR>          chocolatey.0.9.8.28
23.05.2016  21:08    <DIR>          ChocolateyGUI
21.05.2016  13:15    <DIR>          ConEmu
16.05.2015  10:32    <DIR>          Far
21.05.2016  13:16    <DIR>          ffmpeg
21.05.2016  13:17    <DIR>          flashplayeractivex
23.05.2016  21:11    <DIR>          flashplayerplugin
21.05.2016  13:20    <DIR>          javaruntime
21.05.2016  14:38    <DIR>          jre8
13.08.2014  21:08    <DIR>          netbeans-php.8.0
21.05.2016  13:20    <DIR>          PDFXChangeViewer
21.05.2016  14:34    <DIR>          Pencil
23.05.2016  21:08    <DIR>          PowerShell
21.05.2016  15:14    <DIR>          Quicktime   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
16.05.2015  11:06    <DIR>          SwissFileKnife
21.05.2016  13:21    <DIR>          sysinternals
21.05.2016  14:27    <DIR>          virtualbox
21.05.2016  14:29    <DIR>          VirtualBox.ExtensionPack
               0 Datei(en),              0 Bytes
              26 Verzeichnis(se), 337'768'534'016 Bytes frei

Hier habe ich das gleichnamige Verzeichnis gelöscht

C:\ProgramData\chocolatey\lib>del /S Quicktime

Möchten Sie "C:\ProgramData\chocolatey\lib\Quicktime*" löschen (J/N)? J
Datei wurde gelöscht - C:\ProgramData\chocolatey\lib\Quicktime\Quicktime.7.7.5.nupkg

Anm:
ohne Garantie … ggf. in ein anderes Verzeichnis Verschieben, statt zu löschen.

… aber dann ist Quicktime bei mir auch weg gewesen:

C:\ProgramData\chocolatey\lib>choco list -lo

7zip.commandline 16.01
7zip.install 16.01
AdobeAIR 20.0.0.233
autohotkey.portable 1.1.23.07
avirafreeantivirus 14.0.6.552
chocolatey 0.9.9.12
ChocolateyGUI 0.13.2
ConEmu 16.5.15.0
Far 3.0.4242
ffmpeg 3.0.1
flashplayeractivex 21.0.0.242
flashplayerplugin 14.0.0.179
javaruntime 8.0.73
jre8 8.0.91
netbeans-php 8.0
PDFXChangeViewer 2.5.317
Pencil 2.0.3
PowerShell 5.0.10586.20151218
SwissFileKnife 1.6.9
sysinternals 2016.04.28
virtualbox 5.0.20.106931
VirtualBox.ExtensionPack 5.0.20.106931
22 packages installed.

weiterführende Links:

  1. https://chocolatey.org/

Sicherheitswarnung bei Programmverknüpfungen nach Win10 Update

Samstag, 6. Februar, 2016

Irgendwie nervt es. Es gibt diese Symbolleiste “Links” wo man Favouriten als Programmverknüpfungen ablegen kann.
2016-02-06-linkleiste-00.png

Mit IE-Update, mit Windows 10 Upgrade und jetzt wieder mit einem Windows10 Update kommen die Sicherheitsdialoge immer wieder aufs Neue und fragen höflich “Datei öffnen - Sicherheitswarnung … Möchten Sie diese Datei öffnen? …”

Das, was ich zu einer früheren Windows einmal erfolgreich praktizierte (icacls-Aufruf), funktioniert seit Windows 10 scheinbar nicht mehr. Dass der Order mal Links oder aber Favouriten heisst, ist an der Stelle nicht einmal das Problem. Die Methode geht einfach nicht mehr.

Schnelle Lösungen, die ich gefunden habe …

Für eine einzelne Verknüpfung die nachfolgende Variante:

(1)
Icon aus der Links Leiste einfach mit gedrückter linker Maustaste auf den Desktop ziehen und dort fallenlassen.
2016-02-06-linkleiste-01.png

(2)
Das Icon wird verschoben.
2016-02-06-linkleiste-02.png

(3)
Das Icon auf dem Desktop dann zurück in die Links-Leiste mit gedrückter linker Maustaste plus Shift-Taste ziehen.
2016-02-06-linkleiste-03.png

Icon nun aus der Link-Symbolleiste anklicken, um das Programm zu starten - der Sicherheitsdialog ist weg. Freu :-)

Um es für alle Verknüpfungen gleichzeitig zu machen, hab ich eine andere Lösung.

Man findet jenen Ordner für die Links im Explorer (Windows-Taste + E), wenn man %USERPROFILE%\Favorites\Links in die Adresszeile eingibt:
2016-02-06-linkleiste-04.png

Wenn man

  • einen neuen Ordner irgendwo anlegt
  • die Dateien aus \Favorites\Links in den Zwischen-Ordner verschiebt
  • dann zurück-kopiert

… ist der Sicherheitsdialog ebenfalls weg.
Ach ja, den Zwischenordner kann man dann löschen.

Ja und sowas wiederum kann man automatisieren und eine Bat-Datei schreiben - quick and dirty einmal so:

set linkdir=%USERPROFILE%\Favorites%\Links
set tmpdir=%TEMP%\Links

mkdir "%tmpdir%" 
move "%linkdir%*.*" "%tmpdir%"
dir "%linkdir%" "%tmpdir%"
pause
copy "%tmpdir%*.*" "%linkdir%"
dir "%linkdir%" "%tmpdir%"
pause
rmdir /s /q "%tmpdir%"

Update vom 12.08.2017
Und mal wieder funktionierte der Trick nicht mehr … aber ich habe etwas gefunden (s.a. Screenshots unten):

  1. Im Explorer zu C:\Users\[Benutzername]\ navigieren und auf “Favoriten” die rechte Maustaste und Eigenschaften wählen.
  2. Im Tab Sicherheit waren “komische” unbekannte User (mit einer SID Nummer). Mit [erweitert] den Editor für die Berechtigungen wählen.
  3. Hier die falschen Benutzer entfernen. Und [Übernehmen] … und [OK]. Durch die aktive Vererbung werden sie in den Unterelementen, zu denen auch der Links-Ordner gehört, ebenfalls entfernt
  4. Das Skript starten, das Links temporär wegschiebt und dann zurückkopiert (entspricht der Beschreibung oben)
  5. Falls die Icons nach dem Zurückkopieren nicht da sind: Die Symbolleiste “Links” ausblenden (rechte Maustaste in der Taskbar -> Symbolleisten -> Links anklicken) … und dann wieder einblenden.

2017-08-12-favoriten-mit-unbekanntem-user-01.png 2017-08-12-favoriten-mit-unbekanntem-user-02.png

Viel Glück!

weiterführende Links:

  1. alter Blog-Eintrag Sicherheitswarnung bei Programmverknüpfungen nach Installation des IE 10
  2. Kommando copy
  3. Kommando dir
  4. Kommando mkdir
  5. Kommando move
  6. Kommando pause
  7. Kommando set