Articles tagués “Windows

Savoir ce qui prend de la place sur le disque dur de son PC Windows

Il y a quelques années, j’avais écrit un article expliquant comment savoir ce qui prend de la place sur le disque dur de son Mac. Il y a quelques semaines, j’ai eu besoin de faire la même chose sous Windows. Pour pouvoir changer de machine, je souhaitais d’abord sauvegarder les données mais après des années d’utilisation, il y avait des giga et des giga à transférer ! Il fallait faire un peu de tri mais l’éternelle question s’est à nouveau posée : par où commencer ?

Sous Mac, j’utilise Disk Inventory X. J’ai donc demandé à alternativeTo de me trouver une alternative pour Windows et il m’a conseillé WinDirStat. Il est disponible sous licence GLP v2 et est donc gratuit. Il est très léger, le téléchargement et l’installation se font en quelques minutes.

Au démarrage, il nous propose d’analyser tous les disques ou d’en sélectionner certains (et donc d’exclure les autres) :

WinDirStat - sélectionner des lecteurs

Pour l’exemple, je lui ai demandé d’analyser tous les lecteurs. Il mouline un moment :

WinDirStat - work in progress

Enfin, il affiche un graphique d’occupation :

windirstat - done

Les résultats ne sont pas ici très représentatifs car j’ai analysé une machine que je viens d’installer et qui ne me sert que pour le développement…il n’y a donc presque rien dessus. Très logiquement, c’est le dossier Windows qui prend le plus de place et le gros carré rouge en bas à gauche correspond à des fichiers systèmes. Lancez-le chez vous et je suis sûr que vos films, séries, photos et mp3 arriveront en haut du classement ! Bonnes analyses et bon courage pour le ménage.


Windows 10 Insider Preview

Si vous voulez tester Windows 10, c’est tout simple : vous pouvez le télécharger sur le site du Programme Windows Insider. Connectez-vous avec votre compte Microsoft ; si vous avez utiliser MSN Messenger dans votre jeunesse, vous en avez sans doute déjà un. Il est possible de tester Windows pour PC et pour smartphone. J’avais choisi PC car je ne pense pas que mon Google Nexus S soit capable de faire tourner Windows à la place d’Android… Au moment du téléchargement, vous pouvez choisir de mettre à jour votre installation actuelle de Windows ou de télécharger une image ISO de Windows. Si vous avez confiance, vous pouvez mettre à jour votre Windows mais il est sans doute préférable de choisir de télécharger une image ISO pour ensuite l’installer dans une machine virtuelle, par exemple avec VirtualBox. Vous trouverez ici des explications pour utiliser Windows 10 avec VirtualBox. L’installation est simple, il faut attendre un peu que ça se passe…

Windows10 - 1 - installation

On finit par arriver sur le bureau :

Windows10 - 2 - desktop

Pour le moment je ne suis pas allé beaucoup plus loin que regarder un peu l’explorateur de fichiers et lancer le nouveau navigateur Edge, qui se nomme pour le moment Project Spartan, si vous le chercher dans le menu Démarrer. Car oui, il y a de nouveau un menu Démarrer (et Edge / Project Spartan est en haut au centre) :

Windows10 - 4- menu demarrer

Et voilà à quoi ressemble le navigateur Edge quand il affiche un site digne de ce nom 🙂

Windows10 - 3 - internet


PCI database pour identifier un périphérique

Il arrive des fois qu’un périphérique ne soit pas reconnu par Windows. Si on sait ce que c’est, on peut chercher un driver sur internet mais des fois, on ne sait pas ce que c’est… Ca arrive par exemple en formatant un PC et au redémarrage, il ne reconnait pas la carte Wifi par exemple. Si on ne connait pas le modèle (ce qui est souvent le cas), comment trouver un driver ? L’idée est de déterminer les identifiants PCI du périphérique et d’utiliser le site PCI Database.

Je prend l’exemple de la carte Wifi car c’est ce qui m’est arrivé lors de mon dernier formatage d’un PC Windows. Pour identifier le périphérique, voici le mode opératoire :

  • aller dans le Gestionnaire de périphériques,
  • cliquer-droit sur le périphérique récalcitrant et choisir Propriétés,
  • aller dans l’onglet Détails et sélectionner Numéros d’identification du matériel dans la liste déroulante.

Voici le genre d’information que vous obtiendrez (ici, c’est après avoir installé le bon driver) :

pci

On obtient donc le numéro du vendeur (VEN pour vendor : 168C) et le numéro du périphérique (DEV pour device : 002B) (ces codes sont en base hexadécimale). On se rend ensuite sur le site PCI Database. Personnellement, j’ai choisi de faire une recherche par vendeur, j’apprends au passage qu’il s’agit d’Atheros et j’obtiens alors la liste des périphériques de ce fabricant. Je cherche enfin mon périphérique dans cette liste. Hop ! Je connais maintenant la marque et le modèle, j’attaque maintenant une recherche sur Google pour trouver le driver correspondant. Ce qui n’est pas toujours chose aisée… PCI Database propose un lien, voyez s’il est concluant dans votre cas. A noter au passage que pour Atheros, le site non officiel tchèque des drivers est visiblement digne de confiance ^^


Process Explorer pour connaitre les descripteurs de fichiers maintenus par les processus Windows

J’avais besoin aujourd’hui de savoir qui était l’enfoiré le méchant qui avait verrouillé un fichier et m’empêchait de le supprimer. Il existe un outil pratique pour faire cela sous Windows : Process Explorer. On peut aussi savoir quelles sont les DLL utilisées par les processus. Le lien décrit en français comment utiliser ce logiciel, je vous laisse donc lire ça.


Gestion des erreurs avec les sockets en C

Les sockets sont la base de la programmation d’applications réseau et il n’est pas rare de les manipuler en C. Il est assez facile de faire du code portable entre Windows et les autres systèmes d’exploitation courant (Linux, Mac OS X et autres Unix), en incluant les en-têtes qui vont bien à coup de directives pré-processeur et en pensant à démarrer la bibliothèque Winsock2 sous Windows. Vous pouvez lire ce tutoriel sur les sockets C, c’est avec lui que j’ai appris lors d’un projet en C à l’INSA.

Dans mon présent article, je souhaite mettre en avant un point qui n’est sûrement pas écrit assez gros dans le tutoriel : si les fonctions de manipulation des sockets sont les mêmes, la gestion des erreurs est différente ! En effet, les Unixoïdes positionnent correctement la variable magique errno et on peut donc utiliser perror() et strerror() pour avoir un message lisible décrivant l’erreur. Mais Windows ne positionne pas errno ! Le vilain ! Il faut alors utiliser la fonction WSAGetLastError() pour obtenir un code équivalent à errno et utiliser la fonction FormatMessage() pour obtenir un message lisible.

Voici un code simple (et imparfait, le retour de socket() n’est pas vérifié par exemple). Si l’adresse IP que vous renseignée n’est pas correcte pour votre ordinateur, alors la fonction bind() échouera. On pourra alors constater la différence entre Windows et les autres.

#include <errno.h></pre>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#if defined (_WIN32)
#include <winsock2.h>
typedef int socklen_t;

#elif defined (__linux__)
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;

#endif

#define PORT 23242

int main(void)
{
#if defined (_WIN32)
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,2), &WSAData);
#endif

    SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);

    SOCKADDR_IN sin;
    sin.sin_addr.s_addr = inet_addr("137.0.0.1");
    sin.sin_family = AF_INET;
    sin.sin_port = htons(PORT);

    errno = 0;

    int sock_err = bind(sock, (SOCKADDR*)&sin, sizeof(sin));

    if(sock_err == -1)
    {
        printf("Errno bind(): %d : %s\n", errno, strerror((errno)));
        perror("Perror bind()");

#if defined (_WIN32)
        printf("WSAGetLastError bind() : %d\n", WSAGetLastError());
        char *wsa_message = NULL;
        FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
                NULL,
                WSAGetLastError(),
                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                (LPSTR)&wsa_message,
                0,
                NULL);
        printf("FormatMessage : %s\n", wsa_message);
        LocalFree(wsa_message);
#endif
    }

#if defined (_WIN32)
    WSACleanup();
#endif

    return EXIT_SUCCESS;
}

Résultat sous Windows Seven :

Errno bind(): 0 : No error
Perror bind(): No error
WSAGetLastError bind() : 10049
FormatMessage : L'adresse demandée n'est pas valide dans son contexte.

Résultat sous Mac OS X :

Errno bind(): 49 : Can't assign requested address
Perror bind(): Can't assign requested address

Gardez ce détail en tête pour éviter de vous retrouvez avec un code qui compile et s’exécute de la même manière mais avec perror("Bind()"); qui affiche des messages d’erreur qui n’ont aucun rien à avoir la choucroute comme Bind(): Result too Large ou encore Bind(): No error.


Concevoir un site comme celui-ci avec WordPress.com
Commencer