28

notepad.exeとmspaint.exeがさまざまなバージョンのWindowsで機能する場所を見つけるための最良の方法は何ですか?

を介してWindowsディレクトリを取得してからSHGetFolderPath(NULL, CSIDL_WINDOWS, NULL, SHGFP_TYPE_CURRENT, dir)、すべてのサブディレクトリをトラバースして2つのファイルを探す必要がありますか?

(私はWindowsフォルダー以外には何も興味がないと仮定します。)

4

11 に答える 11

41

これは、私がアクセスできるすべてのWindowsボックス(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

すばらしいのは、実際の環境変数を使用する必要%PATH%なく、別の環境変数を使用して独自の検索パスに置き換えることができることです。

于 2009-02-06T07:28:29.483 に答える
19

Microsoft Platform SDK がインストールされている場合 ( 2003 年 2 月のバージョンが Microsoft VC6 で動作する最後のバージョンです)、where.exeプログラムを取得して (38K で、gzip すると 18K しかありません)、実行できます。

where notepad.exe

whereコマンドからのヘルプ:

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
于 2009-02-06T14:16:30.020 に答える
3

キー HKEY_CLASSES_ROOT\Applications\notepad.exe がローカライズされたバージョンで同じかどうかを確認します。キー名が同じで、編集/開くの値がローカライズされたexeを指している可能性があります。
例:

英語:
HKEY_CLASSES_ROOT\Applications\notepad.exe\shell\edit\command
%SystemRoot%\system32**NOTEPAD.EXE** %1

オランダ語:
HKEY_CLASSES_ROOT\Applications\notepad.exe\shell\edit\command
%SystemRoot%\system32**kladblok.exe** %1

その場合は、そのキーのレジストリをチェックしようとしています (同じことが mspaint にも当てはまります)。

于 2009-02-06T08:24:09.357 に答える
2

windir小さなことから始めて、環境変数を取得し、サブフォルダー%windir%\system32\mspaintとを探す必要があると思いますnotepad。おそらく彼らはそこにいるでしょう。

ただし、それが失敗した場合は、より力ずくの検索に頼ってください。

于 2009-02-06T07:30:24.347 に答える
2

通常は、それらを実行するだけです。これらは、すべてのバージョンのWindowsのシステムパス上にあります。

を使用できますExpandEnvironmentStrings。拡張する環境変数はですWINDIR

GetWindowsDirectory以前はまたはを使用できたかもしれGetSystemDirectoryませんが、非推奨になっていると思います。

于 2009-02-06T07:47:13.877 に答える
2

タイプ:

%windir%\system32\notepad.exe パス バーの事

また

C:\Windows\System32 で、notepad.exe を見つけます

*C は、OS が配置されているハード ドライブです :)

于 2012-03-05T15:56:02.720 に答える
1

WinAPI で質問にタグを付けたので、SearchPath()を使用します。たとえば、次のように変数pathに結果が入力されます。

//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);
于 2009-02-08T02:49:51.747 に答える
0

DOSプロンプトを開いて、Windowsフォルダに移動し、次の手順を実行してみてください。

dir notepad.exe /s

長生きするDOS:)

于 2009-02-06T07:28:26.067 に答える
0

Windows\System32要するに、ディレクトリとHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Pathsレジストリ キーを確認するのが最善の方法であることがわかりました 。

より一般的には、最善のアプローチは模倣することだと思いますShellExecuteEx

出典:
アプリケーション登録 (Windows)
https://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx

ファイルは次の場所で検索されます。
• 現在の作業ディレクトリ。
•Windows ディレクトリのみ (サブディレクトリは検索されません)。
•Windows\System32 ディレクトリ。
• PATH 環境変数にリストされているディレクトリ。
•推奨: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App パス

さらに考えられるのは、およびStart Menu\Programs\Accessoriesを使用SHGetFolderPathしてをチェックし、lnk ファイルからターゲットを取得することです。CSIDL_STARTMENU := 11CSIDL_COMMON_STARTMENU := 22

于 2017-02-05T12:15:10.157 に答える
-2

system32 フォルダに移動し、「ファイル名」バーに「notepad.exe」と入力します。

于 2014-08-13T17:56:23.577 に答える