1行のテキストを含む小さな小さなテキストファイルの場合、それを別のファイルに書き込むのは一種の無駄です.
なぜ「無駄」になるのでしょうか?それはそれを見る奇妙な方法です。そもそもファイルを書き込む価値がある場合は、別のファイルに書き込む価値があります。
ジェイコブがコメントで言っているように、実行可能ファイル自体を変更することは、まったく簡単な作業ではありません。それを実現するためにコードを動作させることは、本当の無駄です。そして、それは、ウイルス スキャナー、企業ポリシー、または基本的なコード レビューを通過して、そのようなコードを取得できることを前提としています。
ファイルをユーザーの PC に書き込むのはあまり好きではありません。書き込む必要のあるデータはそれほど多くなく、(私の目には) 専門家らしくないように見えるためです。ユーザーの PC。
あなたはこれについて心配する正しい本能を持っていますが、この特定のケースでの心配は見当違いです. ユーザーのデスクトップやドキュメント フォルダ、さらにはハード ディスクのルート レベルにファイルを書き込むことは、確かに専門的ではありません。これらの場所は、ユーザーまたはシステムに排他的に属しており、それらに正常に書き込むことができたとしても (UAC はディスクのルート レベルでずっとあなたと戦います)、そうすべきではありません。(何とか何とか、私はこれについて前に怒鳴りました。)
代わりに、まさにこの目的のための Application Data フォルダーを使用してください。この場所への読み取り/書き込み権限があることが保証されており、通常のユーザーがそこを見ることはないため、あなたが投げたものを見ることはありません.
起こり得る唯一の間違いは、そのようなフォルダーへのパスをハードコーディングすることです。そうしないでください。マシンが変わると場所が変わります。代わりに、Environment.GetFolderPath
メソッドを使用してその場所を取得してください。その関数は値の 1 つを取りますが、そのEnvironment.SpecialFolder
値には異常な数があります。この目的のために興味を持っているのは次の 3 つです。
ApplicationData
、ユーザーのアカウントを使用してローミングする必要があるアプリケーション データを格納するために使用されます (つまり、別のマシンを使用してログオンするときにアカウントを使用します)。
LocalApplicationData
、ユーザーのアカウントでローミングしてはならないアプリケーション データを格納するために使用されます (つまり、現在のマシン上でのみローカルにとどまります)。
CommonApplicationData
これは、すべてのユーザーに共通の (つまり、ユーザー固有ではない) アプリケーション データを格納するために使用されます。