none
レジストリのシステム環境変数にpathを書き加えたい RRS feed

  • 質問

  • いつもお世話になります。
    VisualC#2010、Windows7での動作について質問があります。
    レジストリのシステム環境変数にpathを書き加えたいと思います。
    string registryKey = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment";
    string registryName = "Path";
    string registryValue = @"C:\Program Files\myprogram";
    RegistryKey registrykey = Registry.LocalMachine.CreateSubKey(registryKey);
    registrykey.SetValue(registryName, registryValue);
    registrykey.Close();
    で、
    RegistryKey registrykey = Registry.LocalMachine.CreateSubKey(registryKey);
    の行で「レジストリキーへのアクセスが拒否されました」とエラーになります。
    RegistryKey registrykey = Registry.CurrentUser.CreateSubKey(registryKey);
    の場合は問題なしです。
    どのようにすればよいのでしょう?
    2011年9月29日 14:17

回答

すべての返信

  • 管理者権限でアプリケーションを実行する必要があります。
    • 回答としてマーク d-kot 2011年9月29日 21:57
    2011年9月29日 15:11
  • ところでこのコードは、どのぐらいの頻度でシステム環境変数を操作する想定をされていますか?

    通常、アプリケーションインストール時に追加し、アンインストール時に削除する程度のはずですが。もしそのような用途ならば、C#コードで記述するのではなくインストーラーで設定すべきです。

    ちなみにこの手のレジストリは広く知られていますが、Microsoftとしての公式な説明としてはこんな風に書かれていて、レジストリを直接操作することはあまり想定されていません。

    2011年9月29日 21:28
  • Hongliangさん、ありがとうございます。
    できました。
    2011年9月29日 21:57
  • 佐祐理さん、おはようございます。
    頻度ですが、「1回ではない」と思っています。1回だけならGUIで操作するのも別にいとわないのですけれども。
    ちなみに手許に複数のPCがあり、すでに3回おなじ作業をしています。1回目は手作業で、2回目はそれを置き換えられないか検討しつつ手作業で、3回目はこのソフトで自動で実行しました。

    インストーラーは使ったことも作ったこともなく、拒否できずに明示的でなく勝手にレジストリを書き換えるのはぜんぜん気乗りしませんので、今後もインストーラーを作ったり使うことはないと思います。
    ぜんぜんそんな考えはありませんでした。思いもつきませんでした。わたしは第3者のアプリケーションでも、インストーラーがあるだけで(可能なかぎり)使わないのです。
    ただし、インストーラーを作るのがよほど簡単なら別ですが。かんたんなものなのでしょうか。入門書でそういうページを見たことがあまりない気がします。読み飛ばしているだけかな。

    2011年9月29日 22:32
  • インストーラーからの書き換えが嫌で、プログラムから勝手に書き換えるのは許せるのでしょうか? 発想が逆です。

    Windowsでは従来からユーザーの意図しない変更を加える際には管理者権限が必要でした。そしてWindows Vistaからはそれがより強調され、先のHongliangさんの回答にもあるように「管理者として実行」を明示する必要があります。これの意味するところは、管理者として実行しなければ、意図せず(この例であれば)システム環境変数が変更されることはありません。そういうセキュリティの考え方です。

    ですので、システムに変更を加えること(=管理者として実行が必要になる操作)はインストール時にまとめる、というのが今のWindowsアプリケーションのあり方です。アプリケーション実行の度にシステム環境変数を変更する必要があるとしたら、設計を見直してください。実際、システム環境変数はめったに変更されるものではありません。(他のアプリケーションを使ってみればわかりますよね?)

    2011年9月29日 23:00
  • 佐祐理さん、こんにちは。
    いつもほんとうに発想が逆でおもしろいなと思います。
    インストーラーにしろなんにしろ、なにをしているのかわからない変更を勝手にして拒否できないことに対して、わたしは強い違和感を感じます。なにをしているのかを明示してくれるインストーラーはほぼ皆無ではないかとも感じています。もっとも、この3年程は、ほぼインストーラーつきのソフトを使うことはないので、インストーラーについてはよく知りませんけれど。

    今回の場合、ソフトで行うのは、手作業を置き換えただけで、明示的で、変更内容も把握できていますから、なにをしているのかわかるし、変更を拒否もできます。なにしろ自分用のソフトですし。
    それの設計を見直す気はありません。皆無です。
    たぶん、ぜんぜん立っている位置が違うと思います。

    2011年9月30日 14:06
  • なにしろ自分用のソフトですし。
    それの設計を見直す気はありません。皆無です。
    たぶん、ぜんぜん立っている位置が違うと思います。

    そうだとは思いますが、立ち位置が違うものをあなた自身が言及したことが議論の始まりでは?

    前の投稿で「自分用の環境設定ソフトだからいらない」とだけ書けばよいのに、「一般論としてインストーラが気にくわない」という趣旨のこと(少なくともそう読み取れる文面)を書かれていますよね?それを書いた時点で、あなた自身が「立ち位置が違う」ことを言及されたわけです。
    その一般論としての認識に対して意見がついているわけですから、「立ち位置が違う」として一蹴するのは横暴かなと感じました。

     

    以下矛盾を感じる点を少し。

    • 他人が作ったものであれば、プログラムだろうとインストーラだろうと、何をしているか明示しないことが多いです。透明性がないことを理由に、インストーラだけを毛嫌いするという理由にはなりませんね。
    • Visual Studio 2010 がでてからは 3 年たっていないので、3 年間インストーラを使っていないは明らかに言い過ぎです。

    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2011年9月30日 14:59
    モデレータ
  • Azuleanさん、こんにちは。
    すこし言葉が過ぎたかもしれません。ごめんなさい。

    まず、インストーラーについて最初に言及したのはわたしではありません。佐祐理さんが「通常」「インストーラーで設定すべき」「レジストリを直接操作することは」想定外と、おっしゃられたのです。

    そこで、通常=一般的にどうなのかということについて、わたしは不自然に思っている、違和感を感じていると考えていることを述べました。その理由についても述べました。
    インストーラーのあるアプリケーションのあることは知っていますし、それを使う文化があることはわかりますが、わたしはインストーラー以前からコンピュータを使っていますし、インストーラーなしで使えるものをわざわざインストールする気はないので、それを使うひとの気が知れない、「通常」がそうだとしたら、わたしは通常でなくてもかまわないし特段困りはしない、と考えました。
    わたしは「インストール文化」には所属していない、いっぽうで、「通常」「設定すべき」と考えているひとがいるということは、インストール文化に所属しているひとがいるということだし、それをさしてわたしは「立ち位置が違う」といったつもりでした。

    インストーラーの有無/ソフト作成者 d-dot 第三者
    インストーラーあり 作らない(作り方を知らないし興味がない、そもそもリリースしない) (可能なかぎり)使わない
    インストーラーなし 作る 使う

    というものです。
    ただ、いくつもの軸があるので、この表だけでは表現しきれていませんけれども。
    これはもう、ほとんど(不毛な)宗教論争のようなものですが、議論すれば「相手が自分とは違う」ことはわかるのではないか、そして相手が自分とは違うことを知ることは、とても興味深いことなので、わたしはこの議論をとても興味深いものだと感じています。

    おっしゃるとおりで、いくつかの矛盾は(もちろん)わかっています。ただ、議論をおもしろくするためには、主張ははっきりさせた方がよいので、「ま、いいか」と矛盾に目をつぶって極論で発言しました。

    ・第三者の作ったものはなにをしているかわかりません。
    ですからわたしは、ほぼすべてを自作しています。基本的かつ究極的にはすべてを自作する以外にないと考えています。

    といっても、おっしゃるとおりで、VisualStudio2010(とてもいい開発環境だと思います)は使っていますし、残念ながらまだExplorerも使っています。IEもです。
    いまプログラム状況を見ると、大変残念ながら42個のプログラムがインストールされているそうです。このほかWindows本体を合わせると、ほとんど無数なのかも…。
    内心忸怩たるものがあります。しかししかたない。すべてをひとりで実現するのは無理ですし…。機会があれば、ハードウェアもOSもぜんぶ作りたいくらいですけれど、時間がなさすぎます。

    ・3年間インストーラーを使っていないはおっしゃるとおり、言葉が過ぎたようです。
    ただ、ほぼ使っていないとも書いていたような気もします。
    ま、それはそれとして、現実に42個。どうしても減らせないものもあります。(いま見ていて、ふたつアンインストールしたので、40個になりましたが…)。

    ということで、矛盾はさておき。
    もしこの話をつづけるのなら(どちらでもよいがこれで終わりかな)、いろいろな方と意見を交換して、楽しんでみたいとも思っています。喧嘩したりする気はないです。
    もちろんこれはほんとうのことです。

    2011年10月1日 23:49
  • まず、インストーラーについて最初に言及したのはわたしではありません。佐祐理さんが「通常」「インストーラーで設定すべき」「レジストリを直接操作することは」想定外と、おっしゃられたのです。

    これは仕方ないと思います。どんな前提、状況なのかを知らない(開示されていない)ので、何に困っているのか推測せざる得ません。
    たいていの場合、環境変数を触るとしたらアプリケーションの導入時であろうということ、そして他者への頒布行為が行われているのだろうことから、一般的にはインストーラで実施するべきだという話になるのは必然だと思っています。

    何らかの特異な事情(自分専用の環境設定ツールなど)があらかじめわかっているのであれば、先に書いておけば必要な議論に集約できるでしょう。

    インストーラーのあるアプリケーションのあることは知っていますし、それを使う文化があることはわかりますが、わたしはインストーラー以前からコンピュータを使っていますし、インストーラーなしで使えるものをわざわざインストールする気はないので、それを使うひとの気が知れない、「通常」がそうだとしたら、わたしは通常でなくてもかまわないし特段困りはしない、と考えました。

    OS 標準に含まれる範囲にしか依存せず、導入時に特別なことをする必要がないのであれば、確かにインストーラは不要です。
    ただ、昨今のアプリケーションとしては、.NET Framework をインストールしなければならない、Visual C++ の再頒布コンポーネントをインストールしなければならない、レジストリに登録しなければならないといった事情を抱えることも多く、インストーラでの頒布が自然なものとなりつつあります。
    (他者への頒布行為はインストーラを使うことが推奨されていたような気がしますが、裏付けをとってないので参考程度に)

    自分で作って自分で使う内は、自分のアプリケーション用のインストーラが不要である点は、昔から変わりませんね。
    (iOS や Windows Phone などは、実質的にインストール行為になると思いますが、また別の話)

    わたしは「インストール文化」には所属していない、いっぽうで、「通常」「設定すべき」と考えているひとがいるということは、インストール文化に所属しているひとがいるということだし、それをさしてわたしは「立ち位置が違う」といったつもりでした。

    それは書かないとわかりませんよ!

    これはもう、ほとんど(不毛な)宗教論争のようなものですが、議論すれば「相手が自分とは違う」ことはわかるのではないか、そして相手が自分とは違うことを知ることは、とても興味深いことなので、わたしはこの議論をとても興味深いものだと感じています。

    インストーラなしで済むならその方がよいというのは、私も同意見です。
    ただ、そういう時代でなくなったとして受け入れているのが現状かな。

    インストーラを作らず、他者へ配布しつつ、環境変数とか起動時に書き換えるために管理者権限を要求するアプリケーションは作らないべきだと思います。太字強調部分である、他者への配布がないのであれば、自分の勝手で決めれると思いますので、それを否定するつもりはありません。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2011年10月2日 7:09
    モデレータ
  • たぶん、ぜんぜん立っている位置が違うと思います。

    それはおかしな話です。フォーラムがなぜ一般公開されているのか理解されていないのですか? 回答内容を読むのはd-kotさんだけではなく、同じような疑問を持つ他の人も読むためです。d-kotさん専用フォーラムではないことを自覚してください。

    ですので、質問の範囲内で一般論を答えるのは当然のことです。

    2011年10月2日 23:54
  • 前提として非インストール形式のプログラムにしたいのであれば、

    レジストリのアクセス自体しないべきだと思いますよ。

    ※configファイルやiniファイルに持たせる等

     

    インストーラ文化という表現をされていますが、そこへの同調に違和感を感じるのであれば、

    完全に独立したアプリケーションにすれば良い話です。

     

    傍目に見て、「入場券は持ってないけど中で買い物させろ」って言っている様にすら見えます。

    2011年10月3日 0:05
  • 佐祐理さん、こんにちは。
    一般論というのはとても危険だと思います。
    「インストーラーが当然」と思う人もいるし、思わない人もいます。
    わたしは充分にインストーラーについて理解していますし、それの功罪についてもわかっているつもりです。
    ですから、インストーラーを使うべきとか、レジストリを使わないべきとかという一方的な意見を、一般論として述べるのはどうなのでしょう?
    わたしは個人的に個人の責任において、レジストリを書き換えるし、インストーラーなしのソフトを作ります。
    必要があれば公開しますし、そうでなければしません。
    それ以上でも以下でもないと思います。

    aviator_さん、こんにちは。
    おっしゃるとおりで、configを使ったりiniを使うほうが、わたしも好きですが、いろいろな拠ない事情で、どうしても今回はレジストリを使う必要が出たのです。
    ちなみに、レジストリを改変するのは自作のソフトですが、改変するための元となるソフトは某超有名ソフトで、それはインストーラーつきであるにもかかわらず、レジストリだけは自分で手作業で書き換えないとダメという、なんのためのインストーラーなのかよくわからないソフトなんです。
    それのヘルパーアプリケーションを作ろうとしているので、書き換えたくなんてないけど、書き換えるはめになっています。
    それがなになのかについてなどについては、全部説明しているわけではないですし、そんなことを説明し始めると例によって、いろいろな話に広がってしまいますけれども。

    ともあれ、わたしはもし自分のソフトをリリースするとしても、理由もなくレジストリを書き換えるようなことはしないです。ほとんどのソフトはconfigを使っています。

    2011年10月3日 12:37
  • 誰も触れていないようなので書いておきます。

    string registryKey = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment";
    string registryName = "Path";
    string registryValue = @"C:\Program Files\myprogram";
    RegistryKey registrykey = Registry.LocalMachine.CreateSubKey(registryKey);
    registrykey.SetValue(registryName, registryValue);
    registrykey.Close();
    

    PATH を、"C:\Program Files\myprogram" に変更しようとしていますが、これ、固定で良いのでしょうか?&変更してしまって良いのですか?
    ディスクにパーティションを2つ作り、うち1つに Windows XP をインストールし、もうひとつを D: ドライブとして認識させたとします。D: ドライブと認識させたディスクに Windows XP をインストールすると、システムドライブが D: になります。つまり、このシステムでは追加しなければならないパスは、"D:\Program Files\myprogram" となります。Windows 7 では、システムを起動したドライブが C: になるようです。
    また、このレジストリのタイプは REG_EXPAND_SZ なので、"%ProgramFiles%\myprogram" とすれば、環境変数を拡張してくれるのでドライブの違いを意識する必要はなくなります。

    ところで、システム パスに追加する(システム パスを変更する)必要が有るのでしょうか。管理者権限がいるのは同じですが、"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" に追加すれば、パスが通っているように扱えます。もっとも、ファイル名が良くあるようなものだと、困ったことになりますけど→実例(wankuma.com)
    あるいは、"HKEY_CURRENT_USER\Environment" の、ユーザー環境変数ではダメなのでしょうか。こちらは、管理者権限が要らなかったと思います。

    さらに、インストーラーを作成していないと言うことですが、では、"C:\Program Files" 以下に、どうやってファイルを置いたのでしょうか。Windows Vista 以降、管理者(Administrator)以外のアカウントが書き込んだ場合は、他の所へリダイレクトされるはずですが。他のアカウントからは見えませんが、そのことは問題にならない?

    そして、「毎回行うわけではない、かつ、1回行ったら2度と行わないような事のために、管理者として実行する必要が有るのか」という所に問題を感じます。
    なぜ、管理者として実行しないようにするのか。それは、管理者しか触れないところに触らないようにするためです。DLL 差し替え等により、乗っ取られても安全なようにです。このソフトは、たった一回しかしないであろう事のために、毎回管理者として実行しなければならない。それは、とても危険なことのように思います。

    さらに、Windows XP の時にはすでに、一般ユーザー アカウントでも実行に支障がないように作りましょう、といわれていたと思います。


    私は、アンインストールするのに手間がかかる方がイヤだなぁ。このアプリをアンインストールしようとすると、手でディレクトリ削除して、PATH の設定を変えて、他にも何か必要かもしれないんですよね。そんなのは、使いたくないなぁ。


    Jitta@わんくま同盟
    2011年10月5日 12:47
  • 「インストーラーが当然」を快く思わないのはd-kotさんの好みの問題なだけで、Windowsプログラムの開発者なら当然の話です。「Windows 7 Client Software Logo Program」にも必須項目にあがっています。本当にインストーラーについてに理解しているのでしょうか?

    レジストリを使わないべきには2つの意味がありまして

    • リンク先のtechnetドキュメントにそう書かれている(レジストリ値の変更手順としてUI操作が挙げられていることから)
    • .NET FrameworkのRegistryクラスは作りがいい加減で、なおかつApp.configに誘導している節がある

    です。ではどうするかとしては

    • 環境変数Pathに依存せず、フルパス指定でコマンドを起動する
    • BATファイルなどで、シェル環境変数を設定する
    • (Jittaさんがあげられている)ユーザー環境変数を設定する

    とか実現したいことにもよりますが、いろいろ方法はありそうですが。そういうことをわかった上であえてシステム環境変数を書き換えているんですか?

    # 好みをどうこう主張する以前にいろいろ知識不足な印象ですけど…。

    2011年10月5日 14:45
  • Jittaさん、たいへん示唆的なコメントありがとうございます。
    PATH を、"C:\Program Files\myprogram" に変更しようとしていますが、これ、固定で良いのでしょうか?
    "%ProgramFiles%\myprogram" のほうがベターです。
    ありがとうございます。

    変更してしまって良いのですか?
    はい。

    まえに、
    「改変するための元となるソフトは某超有名ソフトで、それはインストーラーつきであるにもかかわらず、レジストリだけは自分で手作業で書き換えないとダメという、なんのためのインストーラーなのかよくわからないソフトなんです。
    それのヘルパーアプリケーションを作ろうとしているので、書き換えたくなんてないけど、書き換えるはめになっています。」
    と書いたとおりです。
    最初は質問のために、
    "C:\Program Files\myprogram"
    と書きましたが、実際には
    "C:\Program Files\某超有名ソフト"
    なのです。

    また、このレジストリのタイプは REG_EXPAND_SZ なので、"%ProgramFiles%\myprogram" とすれば、環境変数を拡張してくれるのでドライブの違いを意識する必要はなくなります。
    情報ありがとうございます。

    管理者権限がいるのは同じですが、"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" に追加すれば、パスが通っているように扱えます。
    知りませんでした。試したところ、これでも大丈夫でした。
    ただし、その某超有名ソフトの解説ページでシステム パスに追加する(システム パスを変更する)以外の方法を解説しているページは見当たらないので、この方法のメリットがぴんと来ません。

    あるいは、"HKEY_CURRENT_USER\Environment" の、ユーザー環境変数ではダメなのでしょうか。こちらは、管理者権限が要らなかったと思います。
    これは最初に(質問する前に)試しましたが、だめでした。
    ダメで他に方法がないと考えたのです。

    さらに、インストーラーを作成していないと言うことですが、では、"C:\Program Files" 以下に、どうやってファイルを置いたのでしょうか。

    意図せずに混乱を招いたようですみません。
    その某超有名ソフトにはインストーラーがあります。
    ただし、レジストリだけは自分で手作業で書き換えないとダメというソフトです。

    わたしが作っているのは、適当なところ(任意のフォルダ)で実行できる、レジストリを書き換えるソフトです。
    最初に質問したときに、myprogramと書いたのは、いきなり名指しで某超有名ソフトのインストーラーがろくでもないと書いていらぬ誤解を受けたくなかった、という理由です。
    それがいつのまにかすり替わって、わたしが作ったインストーラーもないソフトを登録するためにレジストリまで書き換える、みたいに誤解されたのかもしれないな、と反省してます。

    そして、「毎回行うわけではない、かつ、1回行ったら2度と行わないような事のために、管理者として実行する必要が有るのか」という所に問題を感じます。
    前述のとおりで、すでに3回おなじ作業をしています。1回目は手作業で、2回目はそれを置き換えられないか検討しつつ手作業で、3回目はこのソフトで自動で実行しました。
    これからもその某超有名ソフトを使う限り、何度も作業することになります。ですから、二度と行わないわけではありません。さらにその某超有名ソフトはかなりひんぱんにバージョンアップをしていて、そのたびに実行パスが変わるらしいので(パスにバージョン名が入っている)そのたびに再加工する必要があるかもしれません。

    なぜ、管理者として実行しないようにするのか。それは、管理者しか触れないところに触らないようにするためです。DLL 差し替え等により、乗っ取られても安全なようにです。このソフトは、たった一回しかしないであろう事のために、毎回管理者として実行しなければならない。それは、とても危険なことのように思います。

    さらに、Windows XP の時にはすでに、一般ユーザー アカウントでも実行に支障がないように作りましょう、といわれていたと思います。

    なにをいいたいのかわかりません。わたしは管理者ですし、安全には気を配っています。たった1回でないことはすでに述べたとおりです。このソフトを使えばボタンひとつでできることを、手作業で行うのは10手間以上かかります。間違いもあります。わたしは10台くらいのマシンを併用しているので、10手間の作業×10台分となると、結構想像を絶する作業です。さらにバージョンアップに対応するとなると…。
    危険は承知の上ですが、安全よりも利便性が優ることもあります。
    その某超有名ソフトがちゃんとインストールからいろいろなところまで行ってくれればいいのですが、現実にはそうではないのです。

    私は、アンインストールするのに手間がかかる方がイヤだなぁ。このアプリをアンインストールしようとすると、手でディレクトリ削除して、PATH の設定を変えて、他にも何か必要かもしれないんですよね。そんなのは、使いたくないなぁ。

    え~と、混乱させて申しわけありませんが、このソフト=某超有名ソフトと考えて回答します。
    わたしもこんなわやなソフトを使うのは、たいへん気乗りしないのです。それでも大人の事情というやつで、使わざるを得ないのです。
    使わなければならないので、せめて使いやすいように、環境整備しています。
    それが自作のレジストリを書き換えるソフトです。

     

    2011年10月6日 12:36
  • 佐祐理さん、こんにちは。
    好みもなくて唯々諾々とプログラムを開発するだけでなくて、そのルールを他人に押しつけるのは、どうなんでしょう。
    という印象です。

    わたしは別にClient Logoなんてとる気ないですよ。
    フルパス指定も、シェル環境変数も、ユーザー環境変数も試した上での選択です。
    どうしてだめかというと、その某超有名ソフトは、某なんとかとかいう開発環境を使うのですが、それがまた複雑怪奇で、そこに対してフルパス指定したり、シェル環境変数を設定する方法がまたぞろよくわからないのです。
    ユーザー環境変数だけではダメなので。

    そこで、独自に自前で開発環境を作ったりもしているのですが、コンパイルだけならできるものの、コード補正とかの機能までぜんぶ自前で実装するのは、さすがに荷が重い。コード中に全角のスペースがあるだけでコンパイルできないようなシステムは、C#しか知らなかったわたしには、にわかに感動ですが、それはそれとして、そんなものを使うのは、なんというか、大人の事情としかいえないですよ。
    当面その開発環境を併用するしかないので、それだとシステム環境変数は必須ということになり、最初の質問に戻るってことです。

    2011年10月6日 12:37
  • 好みもなくて唯々諾々とプログラムを開発するだけでなくて、そのルールを他人に押しつけるのは、どうなんでしょう。という印象です。
    さぁどうなんでしょう? technetのリンク挙げつつWindowsの仕様を提示したまでですし。
    フルパス指定も、シェル環境変数も、ユーザー環境変数も試した上での選択です。
    どうしてだめかというと、その某超有名ソフトは、某なんとかとかいう開発環境を使うのですが、それがまた複雑怪奇で、そこに対してフルパス指定したり、シェル環境変数を設定する方法がまたぞろよくわからないのです。
    ユーザー環境変数だけではダメなので。
    どんなソフトなのか知りませんが、試したのかよくわからないのかどっちなのでしょうか? 知識不足=実現できない、ではないでしょう。それに一般的な開発環境ならユーザーランドで動作するのでユーザー環境変数やシェル環境変数が効くはずですが。環境変数に対する知識が足りないのでは。
    コード中に全角のスペースがあるだけでコンパイルできないようなシステムは、C#しか知らなかったわたしには、にわかに感動ですが

    この部分、何を言っているのかわからなかったのですが、C#は全角スペースを空白文字として認識します。

    ほんと、知識が歪みすぎていませんか?

    2011年10月7日 1:46
  • 好みもなくて唯々諾々とプログラムを開発するだけでなくて、そのルールを他人に押しつけるのは、どうなんでしょう。
    という印象です。

    Windows 上で動くプログラムの開発者に対して Microsoft から提示されている情報の紹介ですので、Microsoft が押しつけているというのであれば、そういう風になるかもしれませんね。
    そのガイドラインを知った上で、どのようにするかは開発者次第でしょうし、ガイドラインに従わなかったために不利益を今後被るのもその判断をした人々なだけですよ。

    公開されたフォーラムである以上、その人(質問者)がどう考えているかは別として、Microsoft が提示しているガイドラインを紹介するのはあってしかるべきなので、私はよい情報提供だと思っています。

    どうしてだめかというと、その某超有名ソフトは、某なんとかとかいう開発環境を使うのですが、それがまた複雑怪奇で、そこに対してフルパス指定したり、シェル環境変数を設定する方法がまたぞろよくわからないのです。
    ユーザー環境変数だけではダメなので。

    ぼかしすぎていて全くわかりませんでした。
    正直なところ、システムのプロパティ → 環境変数 → ユーザー環境変数で効かないという主張は、私も違和感を覚えます。
    本当にきちんと検証されたんですか?
    (どのような推測をもってどのように検証されたかが示されていないので、この文章だけでは本当かどうか疑うことになります)


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2011年10月7日 2:53
    モデレータ
  • > フルパス指定も、シェル環境変数も、ユーザー環境変数も試した上での選択です。
    > どうしてだめかというと、その某超有名ソフトは、某なんとかとかいう開発環境を使うのですが、
    > それがまた複雑怪奇で、そこに対してフルパス指定したり、シェル環境変数を設定する方法がまたぞろよくわからないのです。

    わからないことがあるなら、このわからないことを聞けばよかったのではないか?と思います。

    一般的に広く使われているソフトなら、きちんと名前を出しましょう。そうすることで、それを利用している人からより具体的な情報を得られたり、そのソフトに固有のコミュニティなどの紹介を受けて、あっさりと解決する可能性があります。

    個人的には、システム環境変数とユーザ環境変数を区別して動作することは非常に面倒くさいかつ異常なことなので、d-kot さんが、その「某ソフト」の挙動や設定について勘違いをされているだけではないか?と思います。そちらを解決するのが、d-kot さんにとっては一番益があるのではないかな、と。

     

    2011年10月7日 3:52
  • これからもその某超有名ソフトを使う限り、何度も作業することになります。ですから、二度と行わないわけではありません。さらにその某超有名ソフトはかなりひんぱんにバージョンアップをしていて、そのたびに実行パスが変わるらしいので(パスにバージョン名が入っている)そのたびに再加工する必要があるかもしれません。


    ここの動きだけを見ると JDK とよく似ているという印象なのですが、JDK なわけないですよねぇ。
    JDK だったらユーザー環境変数で十分ですからねぇ。
    2011年10月7日 5:37
  • これからもその某超有名ソフトを使う限り、何度も作業することになります。ですから、二度と行わないわけではありません。さらにその某超有名ソフトはかなりひんぱんにバージョンアップをしていて、そのたびに実行パスが変わるらしいので(パスにバージョン名が入っている)そのたびに再加工する必要があるかもしれません。


    ここの動きだけを見ると JDK とよく似ているという印象なのですが、JDK なわけないですよねぇ。
    JDK だったらユーザー環境変数で十分ですからねぇ。


    私は visual Studio(WDK?)かなと思ったのですが、それも、プログラム メニューの Visual Studio Tools からコマンド プロンプトを起動すればいいだけですからねぇ。

    違った、WDK はドライバーだった。PSDK?また名称変わった?


    Jitta@わんくま同盟
    • 編集済み Jitta 2011年10月8日 3:02
    2011年10月8日 3:01