Trouver le chemin d'accès du bloc-notes.exe et mspaint.EXE

Quelle est la meilleure façon de savoir où le bloc-notes.exe et mspaint.exe sont qui fonctionnent sur différentes versions de Windows?

si j'obtiens le répertoire Windows via SHGetFolderPath(NULL, CSIDL_WINDOWS, NULL, SHGFP_TYPE_CURRENT, dir), puis parcourir tous les sous-répertoires pour chercher les deux fichiers?

(supposons que je ne suis pas intéressé par quoi que ce soit en dehors du dossier Windows.)

26
demandé sur Peter Mortensen 2009-02-06 10:20:01

11 réponses

cela fonctionne sur toutes les boîtes Windows auxquelles j'ai accès (XP+).

c:\> for %i in (cmd.exe) do @echo %~$PATH:i
C:\WINDOWS\system32\cmd.exe

c:\> for %i in (python.exe) do @echo %~$PATH:i
C:\Python25\python.exe

la grande chose est, vous ne faites pas utiliser le %PATH%, Vous pouvez substituer votre propre chemin de recherche en utilisant une variable d'environnement différente.

41
répondu paxdiablo 2012-01-13 00:28:26

si vous avez installé le SDK de la plate-forme Microsoft ( la version de février 2003 est le dernier qui fonctionne avec Microsoft VC6) , vous pouvez saisir le where.exe programme (C'est 38K, seulement 18K si vous le gzip) et exécuter

where notepad.exe

de l'aide de l' where commande:

WHERE [/R dir] [/Q] [/F] [/T] pattern...

Description:
    Displays the location of files that match the search pattern.
    By default, the search is done along the current directory and
    in the paths specified by the PATH environment variable.

Parameter List:
    /R       Recursively searches and displays the files that match the
             given pattern starting from the specified directory.

    /Q       Returns only the exit code, without displaying the list
             of matched files. (quite mode)

    /F       Displays the matched filename in double quotes.

    /T       Displays the file size, last modified date and time for all
             matched files.

    pattern  Specifies the search pattern for the files to match.
             Wildcards * and ? can be used in the pattern. The
             "$env:pattern" and "path:pattern" formats can also be
             specified, where "env" is an environment variable and
             the search is done in the specified paths of the "env"
             environment variable. These formats should not be used
             with /R. The search is also done by appending the
             extensions of the PATHEXT variable to the pattern.

     /?      Displays this help message.

  NOTE: The tool returns an error level of 0 if the search is
        successful, of 1 if the search is unsuccessful and
        of 2 for failures or errors.

Examples:
    WHERE /?
    WHERE myfilename1 myfile????.*
    WHERE $windir:*.*
    WHERE /R c:\windows *.exe *.dll *.bat
    WHERE /Q ??.???
    WHERE "c:\windows;c:\windows\system32:*.dll"
    WHERE /F /T *.dll
18
répondu Jason S 2009-02-06 14:22:16

vérifiez si la touche HKEY_CLASSES_ROOT\Applications\notepad.exe est le même sur les versions localisées. Peut-être que le nom de la clé est le même et la valeur pour éditer/ouvrir des points à l'exe localisé.

Exemple:

anglais:

HKEY_CLASSES_ROOT\Applications\notepad.exe\shell\edit\command

%SystemRoot%\system32* * NOTEPAD.EXE** %1

néerlandais:

HKEY_CLASSES_ROOT\Applications\notepad.exe\shell\edit\command

%SystemRoot % \system32* * kladblok.exe* * % 1

si c'est le cas, alors il est sur le point de vérifier le Registre pour cette clé (même chose pour le mspaint).

3
répondu Stefan 2009-02-06 08:24:09

Type:

%windir%\system32\bloc-notes.EXE dans la barre de chemin thinggy

ou

C:\Windows\System32 et de trouver le bloc-notes.exe

* C est le disque dur où se trouve votre OS:)

3
répondu LukasFT 2012-03-05 15:56:02

je pense que pour commencer, petite, vous devriez obtenir le windir variable d'environnement et de regarder dans les sous-dossiers %windir%\system32\mspaint et notepad. Très probablement ils seront là.

cependant si cela échoue, alors recourez à une recherche par la force plus brutale.

2
répondu Roman M 2009-02-06 07:30:24

normalement, vous ne feriez que les exécuter. Ils sont sur le chemin du système dans chaque version de Windows.

Vous pouvez utiliser ExpandEnvironmentStrings. La variable d'environnement que vous voulez étendre est WINDIR.

dans le passé, vous auriez pu utiliser GetWindowsDirectory ou GetSystemDirectory, mais je pense qu'ils sont obsolètes.

2
répondu Bogdan 2013-03-14 16:49:18

puisque vous avez marqué la question avec WinAPI, j'utiliserais SearchPath () par exemple, la commande suivante va remplir la variable path avec le résultat.

//Get the full path to notepad
char path[MAX_PATH] = { 0 };
LPSTR* ptr = NULL;
DWORD dwRet = SearchPath(NULL, "notepad.exe", NULL, MAX_PATH, (LPSTR)path, ptr);
1
répondu nabiy 2015-06-15 07:49:27

utilisez la fonction WinAPI GetWindowsDirectory() pour obtenir le dossier Windows, et GetSystemDirectory () pour obtenir le dossier Windows\System. Thely est garanti de travailler avec toutes les versions de Windows depuis au moins Win95; je pense qu'ils étaient disponibles dans Win 3.x ainsi.

0
répondu Ken White 2009-02-06 17:59:30

essayez d'ouvrir une invite DOS, changez dans le dossier Windows et faites:

dir notepad.exe /s

vive le DOS :)

0
répondu tehvan 2016-08-17 14:28:05

En bref, je trouve que la meilleure approche est de vérifier l' Windows\System32 annuaire et le HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths clés de registre.

plus généralement, je trouve que la meilleure approche est pour imiter ShellExecuteEx.

tiré de:

Enregistrement De La Demande(Windows)

https://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs. 85).aspx

Le fichier est recherché dans les emplacements suivants:

•Le répertoire de travail courant.

•Le répertoire Windows seulement (aucun sous-répertoire n'est recherché).

* Le répertoire Windows\System32.

* Répertoires listés dans la variable D'environnement PATH.

* Recommandé: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

une autre possibilité est de vérifier Start Menu\Programs\Accessories, à l'aide de SHGetFolderPathCSIDL_STARTMENU := 11 et CSIDL_COMMON_STARTMENU := 22, et récupérer les cibles à partir de l'lnk fichier.

0
répondu vafylec 2017-02-05 12:15:10

allez dans le dossier System 32 et tapez " Bloc-notes.exe" dans la barre "nom de fichier".

-1
répondu Kelly 2014-08-13 17:56:23