C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 153 を表示中)
■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問題が発生する文字を含む文字列を「裏技的」に
ツールのコマンドライン引数に渡す方法はないでしょうか?
単にパス文字の「能」文字の後に\を入れるだけではダメでした。
(\エスケープすればいいという訳にはいかないと思うので、そりゃそうだろうと思います。)

返信 編集キー/


管理者用

- Child Tree -