問題タブ [getmodulefilename]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - GetModuleFileName を適切に使用するには?
次のコード:
プログラムが実行されるフルパスを表示する必要があります。しかし、VS 2012 では次のエラーが発生します。
初期化されていないローカル変数 'buffer' が使用されました
コードの何が問題になっていますか?
windows - 64 ビット アプリからの 32 ビット アプリの GetModuleFileNameExA は、Win7 と Win Server 2012 で異なる動作をしますか?
タイトルではうまくまとめられない複雑な質問です。
32 ビットの子プロセス (Bar32) を作成する 64 ビット プロセス (Foo64) があり、Bar32 のバージョンの kernel32.dll のフル パスを取得しようとします。明らかに、Bar32 が C:\Windows\SysWow64\kernel32.dll からロードしたことを期待しています。
Windows 7 では、Foo64 から GetModuleFileNameExA() を呼び出すと、正しく "C:\Windows\SysWow64\Kernel32.dll" が返されます。
Windows Server 2012 では、まったく同じコードで "c:\Windows\system32\kernel32.dll" が返されます。これは 64 ビットの dll の場所です。Bar32 が 64 ビット dll をロードすることは明らかに不可能です。
私の推測では、Server 2012 は、実際にリダイレクトされた場所ではなく、Bar32 がロードしようとした場所を教えてくれているようです。本当の場所を教えてもらうにはどうすればよいですか?
私が誤解している基本的なことはありますか?
関連するすべての MSDN ページと、関連するすべての Google 検索の最初の 3 ページを読みました。
c++ - WinAPI: 場所が変更されたときに実行可能な独自のディレクトリを見つける
実行可能ファイルの場所を常にチェックし、存在しない場合は定義された場所に移動する C++ プログラムを作成したいと思います。
これは、1 回の実行で機能します。
ただし、私の問題は、実行可能ファイルを実行して GetModuleFileName をループに配置し、実行可能ファイルを別の場所に移動すると、GetModuleFileName が新しい場所を返さないことです。そこから返してもらいたいのですが、私は非常に新しいです。 WinAPI を使っていて、基本的なことをほとんど理解していないので、私を叩いたりしないでください...
c++ - GetModuleFileName がパスを返さない
VS c ++でwin7の下の現在のディレクトリを取得しようとしていますが、
長さ 58 を返し、68 を指す pBuf のポインターであると思われるものを返します。エラーコードは 0 です。
ありがとうございました!
c++ - ラテン文字以外を含むパスを取得できますか?
GetModuleFileName
関数を呼び出して、指定されたモジュールの完全修飾パスを取得し、Process::Start
メソッドを介して同じファイル内の別の .exe を呼び出します。
ただし、パスにラテン文字 (私の場合はギリシャ文字) 以外が含まれている場合、.exe を呼び出すことはできません。
これを修正する方法はありますか?
コード:
c++ - GetModuleFileName サービスでは常に小文字を返す
サービス中の現在の実行可能ファイルへのパスを取得する必要がありますが、GetModuleFileNameW またはグローバル変数 _pgmptr を使用すると、常に小文字のパスが取得されますが、これは私にとっては正しくありません。
例: 元のパスは C:/MyApp/app.exe で、GetModuleFileNameW は常に c:/myapp/app.exe を返します。
問題はデスクトップ アプリケーションでは発生せず、サービスのみで発生します。正しいケース パスを取得するにはどうすればよいですか?
c++ - GetModuleFileName の不明確なエッジ ケース
MSDN ドキュメントの状態:
lpFilename [アウト]
モジュールの完全修飾パスを受け取るバッファーへのポインター。パスの長さが nSize パラメーターで指定されたサイズよりも小さい場合、関数は成功し、パスは null で終わる文字列として返されます。
パスの長さが nSize パラメーターで指定されたサイズを超える場合、関数は成功し、文字列は終端の null 文字を含む nSize 文字に切り捨てられます。
Windows XP: 文字列は nSize 文字に切り捨てられ、null で終了しません。
これはあいまいです。これは、 Windows XP では文字列が null で終了しないと解釈すべきでしょうか? または、文字列が切り捨てられたときに null で終了していないだけですか?
誰かがより適切なリファレンスを知っているか、どこかで Windows XP を実行していて、動作を簡単にテストできる人がいれば幸いです。
c++ - GetModuleFileName を使用して exec ファイルを見つけようとしていますが、数字が返されます
これが私のコードです。出力を保存するバッファがありますが、数値が返されます。誰かがこれを説明できますか?どうすればexeファイルを取得できますか?
windows - GetModuleFileNameW は、GetCurrentDirectoryW (subst) とは異なるパスを返します
次のようなサブドライブを作成しました。
G:\ => F:\projects\プロジェクト名\
GetModuleFileNameW を呼び出すと
元のパスを使用してモジュール パスを返します。例:
サブドライブの場所からソリューションとプロジェクトを実行しているにもかかわらず。
ただし、GetCurrentDirectoryW を呼び出すと
最終的に正しいパスを返します。例:
元のパスではなくサブパスを返すように GetModuleFileNameW を取得するにはどうすればよいですか?