05 Jun 2024, 00:00

Excel n'ouvre pas le fichier lors d'un double-clic

Il peut arriver que lors d’un double-clic sur un fichier xls/xlsx, Excel s’ouvre mais sans ouvrir le fichier demandé.

Pour corriger ceci, aller dans Fichier -> Options -> Options avancées -> Géneral (vers le bas de la liste)
et décocher
Ignorer les autres applications qui utilisent l'échange dynamique de données

Source

05 Jun 2024, 00:00

Supprimer le compte principal d'Outlook

Pour Outlook 2016 et + .

Identifier le nom du profil concerné (ici nom-du-profil ) et du compte mail concerné. Fermer Outlook.
Ouvrir regedit.
Atteindre HKCU\Software\Microsoft\Office\16.0\Outlook\Profiles\nom-du-profil
Rechercher la chaîne 001f6641
Examiner les résultats dans l’ordre ; faire un double-clic sur l’entrée (de type REG_BINARY) pour en voir le contenu, et chercher celle qui contient l’adresse mail à supprimer. Il y en au sûrement plusieurs, la 1e occurence devrait être ok.
Une fois la valeur trouvée, on peut supprimer (ou renommer) l’ensemble de la clé qui la contient.

On devrait alors pouvoir supprimer le compte en question.

Source

04 Jun 2024, 00:00

Ouvrir Périphériques et imprimantes sous Windows 11

shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}

05 Sep 2023, 00:00

Incohérence des adresses mails entre AD, OAC et EAC

Dans le cas d’une synchronisation d’un AD local vers Azure Active Directory (AAD), il peut arriver d’avoir une incohérence dans les adresses mail d’un utilisateur entre l’AD local, le Office Admin Center (OAC) et le Exchange Admin Center (EAC).

Par exemple, supposons que

  • nous avons un domaine local de type mondomaine.ville.entreprise.fr . Ce domaine n’est pas routable sur internet. Nous avons en plus un domaine monentreprise.com qui est routable sur internet et est le domaine utilisé pour les adresses mail
  • monentreprise.com a bien été ajouté comme UPN dans le domaine local
  • nous avons également créé entreprise.onmicrosoft.com chez Microsoft 365, et ajouté/validé le domaine monentreprise.com sur M365
  • le serveur local synchronise les utilisateurs vers AAD
  • l’utilisateur possède une license qui octroie une boîte mail

Dans le cas où, en local, dans “Utilisateurs et Ordinateurs AD” (ADUC), le “Nom d’ouverture de session de l’utilisateur” (UPN) est “@mondomaine.ville.entreprise.fr”, alors l’utilisateur apparaîtra comme “@entreprise.onmicrosoft.com” dans l’OAC et dans l’EAC. Les mails envoyés arriveront via la même adresse “onmicrosoft”. L’adresse “@monentreprise.com” apparaît normalement comme un alias, et les mails envoyés à cette adresse sont bien reçus.

Si on modifie le nom d’ouverture de session en “@monentreprise.com”, après synchronisation (et délai de qqs minutes), l’adresse sera modifiée dans l’OAC.
Selon les cas, l’adresse peut également être modifiée dans l’EAC, mais pas systématiquement. Dans le cas où elle reste en “onmicrosoft”, c’est que l’attribut “mail” en local (ADUC) est manquant.
Si on ajoute l’attribut “mail” et lui donnant la valeur “@monentreprise.com”, après synchronisation (et délai), alors elle sera bien mise à jour dans l’EAC, et les mails envoyés auront l’adresse correcte.

19 Jun 2023, 00:00

Exchange online et Powershell

https://docs.microsoft.com/fr-fr/powershell/exchange/connect-to-exchange-online-powershell?view=exchange-ps

Installation

Install-Module ExchangeOnlineManagement
Import-Module ExchangeOnlineManagement

Si les message ModuleNotFound s’affiche, il faut installer ce module. Depuis mars 2020, il faut forcer TLS 1.2 au minimum, pour assurer l’installation correcte des modules et leurs dépendances :
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Connect-ExchangeOnline -UserPrincipalName user@domain.com
Si le nom fourni est un admin, il pourra consulter les statistiques des autres boîtes mail.

Connection RPS (remote PowerShell) dépréciée :
Connect-ExchangeOnline -UseRPSSession

Lister les dossiers d’une boîte mail par ordre de taille

$mailbox = "user@domain.com"
(guillemets obligatoires)

Pour la taille de chaque dossier uniquement, sans les sous-dossiers :
Get-EXOMailboxFolderStatistics $mailbox | Select FolderPath,FolderSize,@{ name="FolderSizeBytes"; expression={((($_.FolderSize -replace '^(.*\()(.*)(\sbytes\))$','$2').Replace(',','')) -as [bigint])}}| Sort-Object -Property FolderSizeBytes -Descending | Out-String -Width 10000 | ft

Avec les sous-dossiers :
Get-EXOMailboxFolderStatistics $mailbox | Select FolderPath,FolderAndSubfolderSize,@{ name="FolderAndSubfolderSizeBytes"; expression={((($_.FolderAndSubfolderSize -replace '^(.*\()(.*)(\sbytes\))$','$2').Replace(',','')) -as [bigint])}}| Sort-Object -Property FolderAndSubfolderSizeBytes -Descending | Out-String -Width 10000 | ft

On peut le piper vers un fichier : > report.txt

Afficher les infos générales d’un boîte mail

Get-EXOMailboxStatistics $mailbox

31 May 2023, 00:00

Noms des services

Pour faire la correspondance entre les noms réels services Windows et leur nom d’affichage (localisés), on peut utiliser la commande Powershell
Get-Service

On peut également rechercher avec un motif du genre
Get-Service -Name *wua*
pour chercher sur le nom ou
Get-Service -DisplayName *update* pour chercher sur le nom d’affichage. Aucune sensibilité à la casse.

13 May 2023, 00:00

Créer ou recréer les fichiers de démarrage BIOS Windows 10

Situation initiale

Pour démarrer, Windows a besoin de certains fichiers de démarrage (et éventuellement secteurs de boot).
Voici comment créer ces fichiers de démarrage s’il sont manquants (par exemple la partition de démarrage a été effacée, ou bien on souhaite passer d’une partition unique à une partition de démarrage séparée).

On a :

  • 1 seule partition NTFS avec une install windows fonctionnelle (C:\Windows, C:\Users etc). Peut être une image. Peut provenir d’un disque MBR ou GPT
  • aucun fichier de démarrage

Note : avec cette méthode, il est possible de contourner la plupart des restrictions imposées à l’installation de Windows, on peut faire un peu ce que l’on veut. Par exemple démarrer en UEFI sur un disque (même NVMe) MBR, avoir une ESP (GPT) en NTFS, démarrer en BIOS sur un disque GPT etc… Je parle ici de la configuration attendue par MS.

Fichiers de démarrage BIOS

Les fichiers de démarrage Windows (10) consistent en :

  • Un dossier BOOT\ contenant :
    • des dossiers de langues type fr-fr
    • Fonts
    • Ressources
    • BCD
    • BCD.LOG (+1|2)
    • BOOTSTAT.DAT
    • bootuwf.dll
    • bootvhd.dll
    • memtest.exe
  • bootmgr
  • BOOTNXT
  • BOOTSECT.BAK

Ces fichiers peuvent être sur le disque C, ou bien sur une partition dédiée (nommée “Réservé au système” si créée automatiquement lors de l’installation de Windows). Cette partition doit posséder le flag boot.

Table de partition

Il faut une table de partition MBR, avec :

  • une partition de 500M (voire 1G) formatée en NTFS, de type “7” (HPFS/NTFS/exFAT) et avec le drapeau boot
  • la partition avec l’install Windows, de type “7” (HPFS/NTFS/exFAT)

(note : il ne me semble pas possible d’avoir une partition système en FAT32, le NTFS est nécessaire. On peut copier les fichiers de démarrage sur une partition FAT32 mais le disque ne bootera pas)
On peut consulter/modifier les types de partitions avec cfdisk.

Par souci de cohérence dans l’ordre des partitions, on peut s’assurer que la partition soit bien numérotée 2 dans la table de partition. Si elle est notée 1, on peut changer son numéro avec la procédure définie ici

Création des fichiers

On démarre ensuite sur une clé USB d’install de Windows 10 (en mode BIOS) -> Dépannage -> Invite de commande
On lance diskpart ; on vérifie les lettres affectées à chacune des partitions (ici C: pour la 500M et E: pour l’install).

list vol

On sort de diskpart, puis
bcdboot E:\Windows /s C: /l fr-fr /f bios

Pour vérifier la présence des fichiers, il faut la commande
dir /a:HS X:

Normalement ça doit démarrer avec la nouvelle partition !

Fichiers de démarrage EFI

Les fichiers de démarrage sont à peu près les même, avec des exécutables .efi. Ils seront dans [ESP]/EFI/Microsoft/Boot/.

Il faut une table de partition GPT, avec :

  • partition type ESP (drapeau esp sur Gparted) de 500M en FAT32
  • la partition avec l’install windows, de type Msft basic data (drapeau msftdata).

(note : il est possible que cela fonctionne même si la table de partition est de type MBR ; en ce cas il faut le flag boot sur la partition FAT32. On préferera toutefois le GPT)

Si la numérotation des partitions est dans le désordre, on peut suivre ces instructions.

Ensuite on démarre sur sur une USB d’install, Réparer le PC, invite de commande, vérifier la lettre de la partition contenant l’install (par exemple C: ), puis
bcdboot C:\Windows
pour mettre les fichiers sur la partition ESP. Ils seront mis aussi bien dans EFI/Microsoft/Boot que /EFI/Boot/bootx64.efi
On peut aussi affecter une lettre à une autre partition et spécifier le flag /s X:.
L’entrée BootOrder dans l’UEFI semble ajoutée lors d’un simple démarrage de Windows si elle est manquante ET si le flag boot/esp est positionné sur la partition ESP.

Si besoin, pour s’assurer de l’installation des éventuels pilotes nécessaires en cas de changement de disque, on peut forcer le démarrage en sans échec :
bcdedit /set {default} safeboot minimal

Lorsque l’on a redémarré en mode sans échec et que tout fonctionne, on peut désactiver ce mode avec
bcdedit /deletevalue {default} safeboot

Comportement à l’install de Windows

Si le partitionnement a été fait avant l’installation de Windows, alors :

  • en UEFI, les fichiers de démarrage seront mis dans la partition flaggée comme ESP
  • en BIOS, les fichiers de démarrage seront mis dans la partition flaggée boot ????

18 Mar 2023, 00:00

Cloner un système Windows d'un disque SATA vers un disque NVMe

Il est nécessaire que la table de partition soit GPT, car Windows refuse de booter sur un SSD NVMe en mode BIOS (et donc MBR).

Il faut déjà avoir démarré une première fois en mode sans échec sur le disque SATA avec le NVMe connecté sur son emplacement NVMe. Ainsi le système installera les pilotes nécessaires à la bonne détection/initialisation du SSD.
Sinon on risque d’avoir une erreur de type “INACCESSIBLE_BOOT_DEVICE” ou reboot immédiat sur l’UEFI.

On peut ensuite cloner le disque normalement (sgdisk, dcfldd etc.)

Si on a quand même le message “INACCESSIBLE_BOOT_DEVICE”, il faut d’abord démarrer en mode sans échec (par exemple en interrompant 3 fois le boot. Le prochain redémarrage devrait fonctionner.

18 Mar 2023, 00:00

Convertir une table de partition MBR en table GPT

Il faut évidemment backuper tout le nécessaire avant la moindre manipulation.

Sous Linux

Source
sudo gdisk /dev/sdX
r f

Sous Windows

Se fait avec l’utilitaire MBR2GPT.EXE.
Ne fonctionne que pour un disque système !

Cet utilitaire va également créer/rendre bootable une partition ESP, et créer les fichiers de démarrage Windows pour protocole EFI.
Il est disponible à partir de Windows 10 1703. Il est prévu pour être utilisé en WinPE/WinRE, mais peut être utilisé directement sur l’OS en cours de fonctionnement avec le flag /AllowFullOS. un certain nombre de fonctionnalités risquent cependant de ne pas fonctionner. Il est donc préférable de redémarrer en WinRE (Paramètres -> Mises à jour et Sécurité -> Récupération -> Démarrage avancé -> Redémarrer) puis Invite de commande.
(possible depuis USB install ?)

Tout d’abord identifier le numéro du disque à convertir avec diskpart, list disk. Dans notre exemple, c’est le disque 9.
mbr2gpt.exe /validate /disk:9 pour vérifier que c’est faisable (voir les pré-requis sur le lien ci-dessus).
mbr2gpt.exe /convert /disk:9 pour effectivement lancer la conversion (+ création de la partition ESP, formatage en FAT32, ajout des fichiers de démarrage pour le protocole EFI etc…)

Il sera nécessaire de paramétrer le boot en EFI car ceci va de paire (sous Windows) avec une table de partition GPT.

22 Feb 2023, 00:00

Notes sur KeepassXC

Aperçu

Keepass est le client original. En v1 il était disponible uniquement sous Windows. Depuis la V2, il est multiplateforme.
Il est codé en dotnet (et donc mono sous Linux).

KeepassX était un client alternatif à Keepass nativement compatible Linux. Il n’est plus beaucoup développé. Je ne me penche pas dessus.

KeepassXC est un fork communautaire de KeepassX, nativement multiplateforme, codé en C++, et encore mis à jour régulièrement.

Keepass2 et KeepassXC partagent le même format de base de données, le format .kdbx.
Il me semble que Keepass v1 utilisait le format .kdb.

On peut ouvrir un fichier .kdbx alternativement avec Keepass2 et KeepassXC, les modifications sont vues mutuellement.

Par défaut, Keepass2 intègre une icône à la zone de notification.
KeepassXC ne le fait pas, mais on peut activer l’option dans les paramètres. Si on coche “Réduire au lieu de quitter l’appli” et “Afficher une icône dans la zone de notification”, on a le comportement le + souple : la fenêtre est réduite lors de la réduction et disparaît lors de la fermeture ; l’appli étant en permanence en fonctionnement dans la zone de notification.

Pour l’instant je me penche principalement sur KeepassXC. Son dépôt git est ici :
https://github.com/keepassxreboot
et son site officiel ici :
https://keepassxc.org/

On peut l’installer via les dépôts Debian avec la commande
sudo apt install keepassxc

L’intégration de KeepassXC à Firefox nécessite un module. En essayant de l’installer depuis le magasin de modules de Mozilla, je n’ai pas réussi à faire dialoguer les 2. Mais Debian package l’extension, et l’association avec KeepassXC a fonctionné directement (après avoir supprimé l’extension installée manuellement).
sudo apt install webext-keepassxc-browser

Il faut également activer, dans les paramètres de KeepassXC, l’intégration (générique) aux navigateurs, ainsi que l’intégration à chaque navigateur que l’on souhaite utiliser.
L’activation du navigateur Firefox va créer un fichier (qui contient le chemin du proxy KeepassXC) dans ~/.mozilla/native-messaging-hosts/ ; il faut donc la réactiver si on fait des tests à base de dossiers FF tout neuf.

Il me semble que chaque connection entre 1 profil et KeepassXC utilise une “base de données” (qui n’est pas la base de données KDBX, mais simplement le nom du lien entre les 2). On peut le voir dans les paramètre de Keepassxc-browser -> Base de données connectée. Je ne sais pas comment consulter les différents liens dans KeepassXC lui-même.

Une fois l’ensemble paramétré, on voit apparaître le logo de KeepassXC à côté des champs username. Si on clique dessus, cela remplit automatiquement les champs, ou propose de choisir l’identifiant en cas d’IDs multiple enregistrés pour une même URL.

Sync

Le fichier KDBX est synchronisable entre différents postes via des outils externes ; en mon cas Nextcloud.
Après test, il s’avère qu’il est tout à fait possible d’avoir le fichier KDBX déverrouillé sur 2 postes en parallèle. Dès que les modifications sont appliquées par le poste qui n’a pas créé ces modifs, KeepassXC s’actualise tout seul et affiche les modifications, sans besoin de fermer/ouvrir la base ou de redémarrer le logiciel.
La modification sera également accessible sous Firefox sans besoin de le relancer, mais en actualisant toutefois la page.

Import

On peut importer (entre autres) une base de password au format CSV. Ceci permet d’importer les passwords de Firefox.
Un bon guide est ici :
https://blog.bilak.info/2021/04/02/moving-passwords-from-firefox-lockwise-to-keepassxc/

On commence par exporter les mots de passe de Firefox dans un fichier CSV.
Si on utilise une version =< 2.7.0 de KeepassXC (jusqu’à Bullseye pour la version des dépôts Debian), il faut modifier les timestamps via le script présent sur le lien ci-dessus.

Ensuite, dans KeepassXC, “Base de données -> Importer -> Fichier CSV”. On choisit le CSV créé précédemment. Il faut alors créer une nouvelle base de données qui contiendra l’import. On pourra fusionner cette nouvelle base avec une base pré-existante ultérieurement.

Pour l’import, il faut cocher l’option spécifiant que la 1ère ligne contient les noms des champs.
Ensuite, établir cette correspondance :

  • Group -> Not Present
  • Title -> url
  • Username -> username
  • Password -> password
  • URL -> url
  • Notes -> httpRealm (pas obligatoire, mais permet de conserver des informations supplémentaires)
  • TOTP -> Not Persent
  • Icon -> Not Present
  • Last Modified -> timePasswordChanged
  • Created -> timeCreated

Fusion de 2 bases

Ouvrir la base destination.
“Base de données -> Fusionner à partir d’une base de données”. Taper le pass de la base source.
Les dossiers sont respectés lors de l’import.