■88942 / ) |
半角文字のみで構成されているパスについて |
□投稿者/ サティ (1回)-(2018/10/16(Tue) 18:11:03)
|
分類:[.NET 全般]
言語:VB2013
僕が作成したアプリでは、別ツールをProcess起動で利用しているのですが、 このツールがエラーとなってしまう場合が判明しました。
このツールを使う際に、ツールで処理を行うファイルのパスを コマンドライン引数に渡しているのですが、 指定したファイルが見つからない、というエラーです。
どうやら、コマンドライン引数に渡しているファイルパスに含まれる 「○○機能」フォルダ名の「能」の字が問題でした。 (いわゆるShift-JISの5c問題のようです。)
恐らく、ツール側ではANSIで受け取っているのでしょうが、 このツール自体を修正することはできません。 そこで、コマンドライン引数に渡すファイルパスに 2バイト文字が含まれないにようにすることを考えました。
例えば、本来ツールに渡したいファイルを一時ファイルにコピー (System.IO.Path.GetTempFileName()メソッド等を利用)して、 一時ファイルのパスをツールに渡すことにより、 この問題を回避できたように思いましたが、 もしかしたら不十分かも知れません。
僕の環境では、一時ファイルは以下のフォルダ内に作成されます。
C:\Users\(ユーザ名)\AppData\Local\Temp
もし、万が一、ユーザ名に「能」や「表」などの5c問題文字が使われていたら この問題が発生してしまいます。
そこで質問なのですが、 すべてのユーザがフルアクセス可能な、パスが半角文字だけとなるフォルダ、 というものは存在するのでしょうか? 対象OSはWindows7以降のWinFormアプリが動作するものに限定します。
また、5c問題が発生する文字を含む文字列を「裏技的」に ツールのコマンドライン引数に渡す方法はないでしょうか? 単にパス文字の「能」文字の後に\を入れるだけではダメでした。 (\エスケープすればいいという訳にはいかないと思うので、そりゃそうだろうと思います。)
|
|