Windows Vista, 7 et 8 : J’ai perdu mon mot de passe

Il y a quelques jours, on m’a apporté une tour à dépanner. La personne, rentrée d’un séjour de deux ans à l’étranger, ne se souvenait plus de son mot de passe de session Windows. Plutôt embêtant !

 

Illustration confidentialité

 

Pour palier à ce problème, j’ai trouvé un tuto remarquable, vulgarisé à souhait et illustré de captures d’écran explicites. Si vous-même êtes confronté à ce soucis, je vous invite à suivre le tuto de cette page pas à pas : http://lecrabeinfo.net/retrouver-un-mot-de-passe-oublie-ou-perdu-sur-windows.html

Sinon, pour les plus pressés, voici la solution (nécessitant un CD d’installation Windows) brute de décoffrage avec explications minimales et dépourvues de captures d’écran.

  1. Bootez sur le CD d’installation de Windows.
  2. Cliquez sur « Réparer l’ordinateur ».
  3. Cliquez sur « Invite de Commandes ».
  4. Une fois sur l’invite de commandes, rendez vous sur la partition contenant l’installation de Windows à réparer. Pour cela, saisissez la lettre de la partition, généralement c: ou d:. Saisissez ensuite :
  5. cd Windows
  6. cd System32
  7. copy Utilman.exe Utilman.exe.bak (on sauvegarde le fichier pour pouvoir le restaurer après la procédure)
  8. copy cmd.exe Utilman.exe (on remplace les options d’ergonomie de l’invite de session par l’invite de commandes)
  9. Redémarrez sur votre installation Windows. Une fois arrivée sur l’écran d’ouverture de session, cliquez sur la petite icône en bas à gauche de l’écran : « Options d’ergonomie ». L’invite de commandes (cmd.exe) doit alors apparaître.
  10. Saisissez net user votre_nom_d_utilisateur nouveau_mot_de_passe

Voilà, vous avez mis à jour votre mot de passe. ^^

Mais ce n’est pas tout à fait terminé. Il nous faut maintenant restaurer le fichier Utilman.exe original.

Redémarrez sur le CD d’installation de Windows et rendez-vous à nouveau sur l’invite de commandes (cf. ci-dessus). Saisissez ensuite :

  1. cd Windows
  2. cd System32
  3. del Utilman.exe : on supprime le fichier qu’on avait modifié
  4. ren Utilman.exe.bak Utilman.exe : on restaure le fichier initial

 

Et le tour est joué ^^

Word 2013 : Ajouter des cases à cocher (checkbox) dans un document

Il y a quelques jours, j’ai réalisé un questionnaire pour une enquête avec Word 2013. Ce questionnaire devant être imprimé et distribué, je souhaitais tout de même qu’il ait un minimum de classe.

Il m’a donc fallu ajouter un élément de formulaire à mon document : des cases à cocher.

Pour pouvoir accéder aux cases à cocher sous Word 2013, il faut afficher un menu caché par défaut.

Pour ce faire :

Cliquez sur la petite flèche situé tout à droite de la barre d’outils « Accès rapide », et cliquez sur « Autres commandes… ».

Word 2013 : Personnaliser du ruban

 

Cliquez ensuite sur « Personnaliser le ruban » et cochez la case « Développeur ».

Word 2013 : Options Word

 

Un nouvel élément apparaît dans le menu. Dans son ruban, vous trouverez les éléments de formulaire à ajouter à vos questionnaires, formulaire ou autre :

Word 2013 : Ruban Développeur

 

Et le tour est joué ^^

Word 2013 : Case à cocher

Gandi Simple Hosting : Redirection permanente de www vers blog

Ce billet est un mémo personnel. Je le partage ici pour d’une part en conserver une trace et, d’autre part, car il pourrait servir à d’autres utilisateurs du service GSH. Pour info, ce mémo n’est valable que si vous utilisez les serveurs de nom (DNS) de Gandi. Ce mémo est basé sur ma configuration personnel. Libre à vous de l’adapter selon vos besoins.

Lors de la création de ce blog, j’ai opté pour l’adresse blog.juansorroche.com. Aujourd’hui, je souhaite que les internautes saisissant l’adresse www.juansorroche.com ou juansorroche.com ou encore n-importe-quoi-d-autre.juansorroche.com soient automatiquement redirigés vers blog.juansorroche.com.

Pour ce faire, c’est très simple :

  1. Connectez-vous sur votre compte Gandi.
  2. Cliquez sur le nom de domaine auquel vous souhaitez appliquer la redirection.
  3. Dans le menu de droite, cliquez sur « Gérer » de l’item « Redirections web« .
    Gandi.net - Redirections web
  4. Cliquez ensuite sur « Ajouter une redirection« . Vous arrivez alors sur ce formulaire :
    Gandi Ajouter une redirection
  5. Sélectionnez « Directe (permanente) » comme type de redirection puis indiquez le sous-domaine à rediriger. Enfin, saisissez l’adresse de destination.

 

Chaque fois que vous créez une redirection, votre fichier de zone DNS est automatiquement mis à jour.

Au final, votre panneau de gestion de redirections doit ressembler à cela :

Gandi Redirections enregistrées

N.B. : Il faut compter environ deux heures pour que le fichier de zone DNS soit propagé. Passé ce délai, vous accéderez à votre site quelque soit le sous-domaine saisie (ou non saisie).

Et le tour est joué ^^

Php – preg_match : recherches multi-lignes et insensibles à la casse (eregi)

Ou comment passer de la fonction eregi à la fonction preg_match.

Jusqu’à présent, au boulot, notre serveur web tournait sur Php 5.2. Une migration vers Php 5.4 est imminente mais nous avons encore certains (très vieux) scripts qui tournent avec des fonctions devenues obsolètes dès la version 5.3.

Parmi ces fonctions passées de vie à trépas, il y a la fonction eregi.

La documentation PHP indique qu’il suffit de remplacer eregi par preg_match en ajoutant le paramètre i.

On pourrait donc penser qu’il suffit de remplacer :

eregi($pattern, $subject, $matches);

 

Par :

preg_match($pattern.'i', $subject, $matches);

 

En fait, ce n’est pas suffisant. Tout d’abord, il faut savoir que la fonction preg_match nécessite des délimiteurs. Vous pouvez librement les choisir. Personnellement, j’ai opté pour ~ car mon preg_match va traiter des portions de code Html. Cela m’évitera donc de devoir échapper le délimiteur. Ensuite, vu la nature de ma chaîne d’entrée (Html), il me faut un traitement multi-lignes. Je vais donc ajouter l’option de recherche (Pattern Modifier) s en plus de l’option i qui, je le rappelle, rend la recherche insensible à la casse (le même i qu’à la fin de eregi).

 

Au final, la fonction eregi doit être remplacée par :

preg_match('~'.$pattern.'~is', $subject, $matches);

 

Je résume. Pour passer de la fonction eregi à preg_match, il faut :

  • ajouter un délimiteur (par exemple : ~ ou # ou / ou ! ou autre)
  • ajouter l’option i pour une recherche insensible à la casse
  • ajouter l’option s pour une recherche sur plusieurs lignes

Et le tour est joué ^^

 

Source : http://stackoverflow.com/questions/12667369/php-preg-match-not-matching-past-line-breaks

Piwik : Erreur 500 pendant la mise à jour

Illustration statistiques

 

Ce matin, mon instance Piwik m’a joué un vilain tour. Sa mise à jour a crashé et m’a renvoyé une jolie erreur 500. Arf !

Que faire dans ce cas-là ?

La solution est assez simple :

  1. Faites une sauvegarde de la base de données (au cas où)
  2. Faites une sauvegarde du fichier de configuration : config/config.ini.php
  3. Téléchargez la dernière version de Piwik
  4. Dézippez et uploadez (les fichiers uploadés doivent écraser les fichiers présents sur le serveur)
  5. Replacez le fichier config.ini.php dans config/

Et le tour est joué ^^

Cmder ou Installer facilement Git sous Windows

L’invite de commande de Windows (toutes éditions confondues) est une catastrophe esthétique, ergonomique et fonctionnelle. Pour pallier à son manque total de fonctionnalité – convivialité – ergonomie, essayez Cmder. Vous ne serez pas déçu.

Comme l’indique son créateur sur la page github du projet :

Cmder is a software package created out of pure frustration over the absence of nice console emulators on Windows. It is based on amazing software, and spiced up with the Monokai color scheme and a custom prompt layout. Looking sexy from the start.

Qui peut se traduire par :

Cmder est un logiciel né de la frustration de l’absence d’un émulateur de Console esthétique et pratique sur Windows. Il est basé sur un logiciel incroyable agrémenté du thème Monokai ainsi que d’une interface de saisie personnalisé. « Sexy » dès son lancement.

 

Lire la suite…

Forticlient : désactiver son lancement automatique au démarrage de Windows

FortiClient : est un client VPN IPSec pour PC windows et smartphone et protège ces équipements contre les virus, les intrusions, les spams, les spywares. En outre, il intègre un pare-feu et un système de filtrage URL. (source : Wikipédia)

FortiClient est un outil très pratique pour les connexions VPN IP Sec. Cependant, il a ce que je considère comme un gros défaut : il se lance automatiquement au démarrage de Windows. Pour ne rien vous cacher, je dois admettre que je déteste les logiciels qui se lancent automatiquement sans me demander mon avis. De mon point de vue, je suis maître de ma machine et un programme – non indispensable – n’a pas à s’octroyer des droits.

Bref, vu que je n’utilise pas Forticlient tous les jours, j’ai décidé de « dézinguer » son lancement automatique. Bien entendu, le service FortiClient n’apparaît pas dans la liste des logiciels chargés au démarrage du système. Vous pouvez vérifier avec l’outil Ccleaner (Menu « Outils », rubrique « Démarrage ») ou directement en exécutant msconfig.exe. Croyez-moi, vous ne trouverez pas ce fourbe.

La manip’ n’est pas compliqué mais je préfère la noter ici, d’une part pour la partager avec vous, d’autre part pour en garder une trace au cas où je serais amené à la refaire. Elle a été réalisée avec FortiClient comme exemple, mais bien entendu, elle est adaptable à tout logiciel « planqué » qui se lance automatiquement au démarrage du système.

N.B. : Les captures ont été réalisées sur Windows 8.1 mais la solution est aussi fonctionnelle pour Windows 7.

 

Lire la suite…

Lancer un script PHP en ligne de commande sous Windows

Comme je le disais dans mes deux derniers billets, je travaille actuellement sur des scripts de migration de données. Le problème avec ce genre de scripts qui traitent plusieurs milliers de lignes, c’est que vous êtes vite bloqué par les délais d’exécution lorsque vous les lancez via un navigateur Web.

Vous avez alors deux possibilités :

  • Fractionner le traitement des données en fixant des plages de traitement (traitement par lots)
  • Lancer votre script directement sur le serveur en ligne de commande

Fractionner le traitement est souvent fastidieux, surtout lorsqu’on doit traiter plus de 80 000 lignes.

La solution la plus simple est donc de lancer votre script directement dans une console (Invite de commandes). Pour ce faire, ouvrez une console et rendez vous dans le répertoire contenant le fichier php.exe. Si vous utilisez WampServer, le chemin par défaut est :

C:\wamp\bin\php\php5.5.12>

 

N.B. : la version de PHP varie selon votre version de wamp

Pour lancer votre script, il vous suffit d’exécuter la commande suivante :

C:\wamp\bin\php\php5.5.12>php.exe -f c:\chemin\vers\votre\script.php

 

Et le tour est joué ! ^^

Si vous exécutez souvent des commandes PHP en ligne de commandes, vous pouvez également déclarer le chemin de votre php.exe dans vos variables d’environnement du système. Cela vous évitera de devoir vous positionner dans le répertoire de php avant de lancer vos scripts. Pour plus d’informations, n’hésitez pas à consulter la documentation PHP sur php.net : Ligne de commande PHP sous Microsoft Windows

MySQL : Autoriser/Forcer id=0 pour les PRIMARY KEY avec AUTO_INCREMENT

Dans le cadre de la migration des données d’une structure de base à une autre, j’ai été confronté à un petit problème. En effet, dans l’ancienne version de la BDD, certaines tables de paramètres ont un id démarrant à 0 au lieu de 1.

Exemple :

Table « civilite »
Id Valeur
0 Non communiqué
1 Féminin
2 Masculin

 

Or, lorsque je lance la requête :

INSERT INTO `civilite_new` (`civilite_new_id`, `civilite_new_label`) SELECT `civilite_id`, `civilite_label` FROM `civilite`;

 

MySQL me retourne l’erreur suivante :

Error Code: 1062. Duplicate entry '1' for key 'PRIMARY'

 

L’AUTO_INCREMENT prend la première ligne (Id = 0) et force l’Id à 1. Du coup, lors du traitement de la deuxième ligne, MySQL bloque car la valeur de l’Id de cette dernière est également 1. Partant de ce constat, deux solutions sont possibles :

  • ré-incrémenter toutes les tables en décalant les id (on aurait donc 1, 2, 3 à la place de 0, 1, 2) – Attention aux intégrités référentielles
  • forcer la valeur 0 du premier Id – pas très « propre » mais efficace

Dans mon cas, la première solution ne me convient pas car le code de l’application qui alimente cette base de données repose sur le principe de Id = 0 pour « Non communiqué ».

Donc, pour forcer la mise à 0 des premiers Id, il va donc falloir user du mode SQL NO_AUTO_VALUE_ON_ZERO :

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO';

 

Ajoutez la ligne ci-dessus avant votre INSERT ou UPDATE.

Une fois vos requêtes exécutées, n’oubliez pas de désactiver le mode « NO_AUTO_VALUE_ON_ZERO » :

SET SQL_MODE=@OLD_SQL_MODE;

 

Et le tour est joué ! ^^

MySQL : Désactiver temporairement les contraintes référentielles

Actuellement, je travaille sur un script PHP de migration de données d’une structure de base de données à une autre. L’ancienne structure était composée de table au format MyISAM sans contraintes référentielles (vu que ce format ne gère pas la déclaration de FOREIGN KEY). La nouvelle structure, quant à elle, est composée de table au format InnoDB où les intégrités référentielles sont déclarées.

Le problème avec ces contraintes référentielles, c’est que mon script de migration bloque dès qu’une de ces contraintes n’est pas respectée. Je vous l’accorde, ce n’est pas un problème en soi puisque c’est justement le but lorsqu’on déclare les intégrités référentielles : vérifier la cohérence du contenu de la base de données.

Une fois que le script m’a renvoyé l’erreur, je le corrige et il me faut alors vider la table impactée afin de le relancer et vérifier que le problème est bien résolu. Si je tente un TRUNCATE ou un DELETE FROM sur ma table, MySQL me renvoie alors l’erreur suivante :

Error Code: 1701 Cannot truncate a table referenced in a foreign key constraint (...)

 

Bien. MySQL vérifie donc correctement les contraintes. Cependant, il faut bien que je vide ma table pour relancer mon script. Pour pallier à ce problème, il suffit donc de suspendre le contrôle des contraintes temporairement (le temps de la requête en fait) :

SET FOREIGN_KEY_CHECKS=0;

DELETE FROM bdd.table; -- ou autre(s) requête(s)

SET FOREIGN_KEY_CHECKS=1;

 

Et le tour est joué ! ^^