DOBON.NET DOBON.NETプログラミング掲示板過去ログ

winlogon.exeのパスを取得すると謎の文字が混入する

環境/言語:[OS : Windows XP / 言語 : Visual Basic .NET]
分類:[.NET]

プロセスの一覧ソフトを作っているのですが
System.Diagnostics.Process.GetProcesses()
でプロセスを全て取得して
MainModule.FileNameプロパティで
実行ファイルのパスを取り出すと、↓のようにwinlogon.exe のパスに謎の文字が混入してしまいます
[正常]C:\WINDOWS\system32\winlogon.exe→[結果]\??\C:\WINDOWS\system32\winlogon.exe

そのままパス関係の処理をすると、「パスに無効な文字が含まれています」とエラーが発生してしまいます
これはMainModule.FileNameプロパティの仕様なんですか?それとも何か解決策があるのですか?
教えてください

なお、自分の環境にwinlogon.exe以外に謎の文字が混入することはありませんでした

IDEはVB2008Expressです
よろしくお願いします
直接的な回答ではありません。

過去(2007 年)にも同様の質問が MSDN Forum にあったようですね。
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/3dd0be9f-296c-49be-b527-ab6960bbe33b

これに対して有力が回答がないことから、多くの人は困っていないか、解決策がないか、そういったところかと思っています。
(私自身、用途が思いつかないので深く調べようとは今の時点で思っていません)
> これはMainModule.FileNameプロパティの仕様なんですか?それとも何か解決策があるのですか?
> 教えてください

  WinXPでは動作させていませんが・・・
  VISTA/Win7 で実行させてますが、問題なく取れてます。

  なお、Expressではなく、Professionalです。

  因みに、32/64bitでも問題なかったです。

※ サービスパックとか言語パックってどうなってます?

以上。
■No28753に返信(オショウさんの記事)
>>これはMainModule.FileNameプロパティの仕様なんですか?それとも何か解決策があるのですか?
>>教えてください
>
>   WinXPでは動作させていませんが・・・
>   VISTA/Win7 で実行させてますが、問題なく取れてます。
>
>   なお、Expressではなく、Professionalです。
>
>   因みに、32/64bitでも問題なかったです。
>
> ※ サービスパックとか言語パックってどうなってます?
>
> 以上。
サービスパックはSP3ですが、言語パックは分かりません
(確認する方法が分かりません)
いろいろ調べてみましたが、改善方法がどうしても見つかりませんでした
第一この問題が発生して困ったという例自体ほとんど見つかりませんでした
どうやら一部の環境にだけ発生する問題のような気がします
とりあえずReplace関数を使った↓のコードで対処しました
Dim filename As String
filename = p.MainModule.FileName
filename = filename.Replace("\??\", "")
これでとりあえずwinlogon.exeのパスも取得できるようになりました
Azuleanさん、オショウさん、ありがとうございました
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板