次の方法で共有

64bit版のcscript.exeを基本起動にしたいです。

Anonymous
2010-06-11T13:38:20+00:00

現在、プログラムの勉強中です。

作成したプログラムの実行にはコマンドプロンプトでcscriptを使用しています。

今まで、中古パソコンのXP(32bit)でプログラミングを行ってきたのですが、この度パソコンを買い替え、OSもWindows7HomePremium(64bit)に変わりました。

ところが、いつも通り作成したプログラムを実行しようとしたら、「activexコンポーネントはオブジェクトを作成できません」と表示され、今まで作成してきたプログラムも一部、正常な動作をしてくれなくなりました。

これに関する問題は既に解決済みなのですが、

(コマンドプロンプトに「C:\Windows\SysWow64\cscript.exe [実行ファイル]」を渡して実行)

今まで、「cscript」だけで済んでいたものがフルパスを書かなくてはいけないのが嫌です

なので、コマンドプロンプトにいつもどおり「cscript」と書くだけで64bit版のcscript.exeで実行する方法はないものでしょうか?

グーグル先生に聞いてみたのですが、望む回答が得られず、こちらでアドバイスなど頂けたらと思っております。

よろしくお願いいたします。

家庭向け Windows | 以前の Windows バージョン | アプリ

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2010-06-11T14:29:53+00:00

SysWow64フォルダのcscript.exeは32ビット版で、通常実行されるsystem32フォルダのcscript.exeが64ビット版です。

64ビット版では32ビットDLLなどがロードできないのでご質問のような「ActiveXコンポーネントはオブジェクトを作成できません」となったりする可能性があります。

コマンドプロンプトで、path と入力しれみると現在のpathが確認できますが、この中にはsystem32フォルダはあってもsyswow64フォルダは無いので、cscript.exeを実行するとsystem32フォルダのcscript.exeが実行されます。

このpathはシステムのプロパティの[環境変数]で定義されていますが、これ自体を変更するとWindows全体に影響が出てしまします。

いろいろな方法がありそうですが、たとえばデスクトップに[新規作成]-[ショートカット]で、

cmd.exe /k set path=c:\windows\syswow64;%path%

という内容のショートカットを作成し、これを実行するとc:\windows\syswow64がpathの先頭にあるコマンドプロンプトが起動するので、こちらでcscript.exeを実行すればsyswow64フォルダのcscript.exeが実行されると思います。

[追記]

Azuleanさんごめんなさい、かなりかぶってました。

この回答は役に立ちましたか?

4 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2010-06-11T14:14:30+00:00

(コマンドプロンプトに「C:\Windows\SysWow64\cscript.exe [実行ファイル]」を渡して実行)

なので、コマンドプロンプトにいつもどおり「cscript」と書くだけで64bit版のcscript.exeで実行する方法はないものでしょうか?

誤解されているようなので指摘しておきます。

SysWow64 フォルダにあるバイナリは、32bit 版の cscript です。

(Wow64 = Windows-On-Windows 64 の略で、64bit Windows で 32bit Windows アプリケーションを動作させる仕組みのことです)

方法はいくつか考えられますが、試していません。

・コマンドプロンプトを開く時点で、C:\Windows\SysWow64\cmd.exe を利用する。(→ cscript は SysWow64 を利用してくれる??)

・コマンドプロンプトで環境変数 PATH を変更する。ただし、そのコマンドプロンプトでのみ有効となるように注意すること。(システム全体にかけてしまうと、ほかのところで大きな問題が出る)


質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

この回答は役に立ちましたか?

3 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2010-06-11T15:23:52+00:00

    Azulean様、OMEGAT様

    早速のアドバイス、ご指摘ありがとうございます。

    Azulean様:

    誤解されているようなので指摘しておきます。

    SysWow64 フォルダにあるバイナリは、32bit 版の cscript です。

    (Wow64 = Windows-On-Windows 64 の略で、64bit Windows で 32bit Windows アプリケーションを動作させる仕組みのことです)

    そうだったんですね。

    自分はSysWow64 には64bit版の、system32 には32bit版のものが入っているものと思っていましたが、その認識から間違っていたようですね。

    ・コマンドプロンプトを開く時点で、C:\Windows\SysWow64\cmd.exe を利用する。(→ cscript は SysWow64 を利用してくれる??)

    上記方法で動作成功しました。

    (コマンドプロンプトで「chdir \Windows\SysWow64」を実行後、「cscript [実行ファイル]」)

    ありがとうございました!

    OMEGAT様:

    64ビット版では32ビットDLLなどがロードできないのでご質問のような「ActiveXコンポーネントはオブジェクトを作成できません」となったりする可能性があります。

    コマンドプロンプトで、path と入力しれみると現在のpathが確認できますが、この中にはsystem32フォルダはあってもsyswow64フォルダは無いので、cscript.exeを実行するとsystem32フォルダのcscript.exeが実行されます。

    このpathはシステムのプロパティの[環境変数]で定義されていますが、これ自体を変更するとWindows全体に影響が出てしまします。

    なるほど、OMEGAT様の説明で動作させる仕組みがどのようなモノなのかイメージが付きました。

    併せて、環境変数を変更することの危険性も分かりやすく説明していただき、ありがとうございます。

    いろいろな方法がありそうですが、たとえばデスクトップに[新規作成]-[ショートカット]で、

    cmd.exe /k set path=c:\windows\syswow64;%path%

    という内容のショートカットを作成し、これを実行するとc:\windows\syswow64がpathの先頭にあるコマンドプロンプトが起動するので、こちらでcscript.exeを実行すればsyswow64フォルダのcscript.exeが実行されると思います。

    Asulean様の提示してくださった方法で実行を確認できましたので、OMEGAT様の方法でショートカットを作成しようと思います。

    これで普段は64bit版を、動かなかったものは32bit版の方でという使い分けがしやすくなりますね。

    Azulean様、OMEGAT様

    お二方のお蔭で問題が解決できました。

    本当にありがとうございました!

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません