ラベル Windows7 の投稿を表示しています。 すべての投稿を表示
ラベル Windows7 の投稿を表示しています。 すべての投稿を表示

2011年11月6日日曜日

Windows7でApacheが起動しない

タイトルの通り、Windows7に入れたApache2.2が
The request operation has failed
とかエラーダイアログを吐いて起動しなかったので、原因のメモ。

SEさんや開発者の方には常識だが、こういう場合は、Apache様がお使いになられる80番ポートを他のプログラムがいけしゃあしゃあと勝手に使っていることがほとんど。
例えば、Skypeとかね。
(Skypeのポート番号変更はこちらのブログで紹介されています)

今回も、結局犯人は「Web Deployment Agent Service」というマイクロソフトのWeb配置ツールのサービスで、コイツが偉そうにポート80をListenしていやがった。
こんなツール、入れた記憶はまったくないんだけど、どうやらMicrosoft Visual Web Developer 2010 Expressをインストールした時にセットでインストールされたっぽい。Web配置ツールのくせに本家ポート80を占拠するとは…。

というわけで、コンパネ>サービスで上記のサービスを止めたら無事Apacheが起動。

で、ついでに調べ方のメモ。

どのプログラムがどのポートを使っているか調べる

コマンドプロンプトで、以下のコマンドを実行。
netstat -ano

たくさん表示されて流れちゃう時は、パイプで more に渡すといいよ。
netstat -ano | more

ページ送りは[SPACE]キーでOK。


で、PID(プロセスID)の列を見ると、どのプロセスがポートを使用しているかわかる。
PIDがわかれば、「tasklist」コマンドでイメージ名が分かる。
tasklist /FI "PID eq 4"

ただ今回厄介だったのは、上記の例の通り、PIDが「4」、つまりSystemプロセスだったこと。
詳細は「@IT:Windows TIPS -- Tips:netstatでリッスンしているプロセスを特定する」で詳しく解説されているが、要するに、ポート80を占有しているのは「システムプロセスですよ」としか教えてもらえず、すぐには犯人である「Web Deployment Agent Service」を特定できなかった。
というわけで、上記ではサクっと解決した風に書いたが、実はコンパネ>サービスで、サービス一覧から怪しそうなサービスを停止しては、ポートの状態を確認する、という地道な調査で突き止めた。
(今回は犯人に「Web~」というサービス名が付いていたため、2発目ぐらいで運良く犯人にヒットしてくれた。)

というわけで、「httpd.confの内容も合ってるし、なんで起動しないんだ・・・?」という方は、上記の方法なども試して頑張ってみるといいよ。
あるいは、もっとスマートな方法が合ったら是非教えてくだいませ。

2011年6月27日月曜日

BadImageFormatException(x64とx86の混在はダメー!)

Visutal StudioでC#のコンソールアプリを作ってデバッグ実行するときは「Ctrl + F5」で実行しないとコマンドプロンプトがすぐ消えちゃってデバッグしにくいってことを知らずに、すぐ消えるコマンドプロンプトをどうやったら表示したままにておけるのか、10分ほど悩んじゃうぐらいMicrosoftな開発環境とは縁遠くなってしまった私です。Eclipseが恋しいよぅ。

さて、今回初めて開発用PCがWindows 7 の 64bit版を触っていて、いろいろ引っかかる部分が多いので、今後も引っかかりそうなものはここに書き留めていくことにします。

実行すると BadImageFormatException が出る

なんのことだかさっぱりでしたが、とりあえず参照設定したサードパーティのDLLの読み込みでNGらしい。で、ググってmsdnのリファレンスを見ると、この例外が発生する原因として
DLL または実行可能ファイルは 64 ビット アセンブリとして読み込まれますが、32 ビットの機能やリソースが含まれています。
という記載があった。

今回の環境は、

開発用PC(Visual Studioが動作しているPC)・・・Windows 7 Professional 64bit版
サードパーティのDLL・・・Windows 64bit版 DLL

ということで、Win64bit環境だしデフォルトで作れば問題なさそうな気もするが、実はVisual Studioで作成したアプリ(プロジェクト)のデフォルトが32bit(x86)という罠。

というわけで、Visual Studioのプロジェクト側の設定を64bitにしてやるとうまく動きました。

設定変更方法

Visual Studioの「ソリューションエクスプローラー」でソリューションを右クリック。
コンテキストメニューで「プロパティ」を選択。
「プラットフォーム」というプルダウン可能な項目があるので、環境に合わせて(今回だと「x86」から「x64」へ)変更。
※「x64」がプルダウンに無い場合は「構成マネージャー」を使って追加。




ちなみに無料のVisual Studio Expressだとこの設定ができないらしいが、実は単純に「Visualには」できないだけらしい(これナイスな情報ですね)。

2011年6月24日金曜日

Windows 7にIIS入れたけどHTTP404しか返ってこない(Skypeが原因でした)

IISを触るのなんて、10年ぶり2回目。まだあったんだねぇ、インターネットインフォメーションサービスっていうネタとしか思えない名前のWEBサーバー。

環境

Windows 7 Professional
IIS 7.5

ちなみにWindows 7でIISを使うには、別途インストールしてあげないといけない。ちなみにWindows 7では、telnetもこの「機能の有効化」で有効にしないと使えないという奇跡。うむむ。

さて、IISを有効化してlocalhostにアクセスするとHTTP404エラー。
こことか見ながらいろいろ試してもダメ。
localhostで表示されない - Microsoft ASP - 教えて!goo

んで、404エラーが返ってくるってことは80番ポートでHTTPサーバーが待ち構えているのは確か。
試しにコマンドプロンプトで

>netstat -an

したら、0.0.0.0:80 でLISTENINGって出てる。

さらにググったら、「iisとの死闘 (Windows7編) - ヒビノカテ」にて、「Skypeを疑ってみた」との文字が。結局この方はSkypeは犯人じゃなかった、ってことですが、藁をつかんで溺れ続けているボクとしては、それでも尚、藁を一本でも多く掴みたい。

というわけで、Skypeを止めてみた。

「表示できません」に変わった。

お?

で、コマンドプロンプトからIISを起動してみた。
>iisreset /start


わー。出たー。



検証のために再度Skypeを先に起動してからIISを再起動すると、最初のエラー画面に戻ったので、犯人はSkypeで間違いなさそうだ。
というわけで、謎のHTTP404エラーが出てSkypeをインストールしている場合は、真っ先にSkypeを疑ってみてください。


さてこれで無事開発は進められそうだが、開発チームでSkype利用が義務付けられてるから、どっちにしろポート番号を変更するなりして対応しないとダメだな…。

2011年6月23日木曜日

またヤラレた、Windows 7のおせっかい機能UAC

今日、初めてOracle 11gのインストールを体験しましたが、生まれて以来、Oracleのインストールが一発でうまくいった試しがないボクなので(ちなみにOracleは 8以降、全部のバージョンをインストール&構築を経験してきました)、今回はいったいどんな罠が待ち受けているかと、ある意味ワクワクしながらトライしてみました。

インストールセットをzipにまとめたものを解凍しすぎて(jarもツールが勝手に解凍しちゃって)インストールが上手くいかなかったりした、という罠を踏みつつ、それでも最大の罠は、Oracleではなく Windows 7 の UAC機能(今世紀最大のおせっかい野郎)でした。

なんとか苦労してOracleのインストールが終わり、さてリスナーを起動して接続しようとすると、TNSエラーが出て接続できない(ちなみにエラーはTNS-12154)。
これは結局、tnsnames.ora、listener.oraファイルの接続先をIPアドレスではなくマシン名(ホスト名)にすると解決する、とメンバーから助け舟をもらって結果的には解決したんだけど、その前に、tnsnames.ora、listener.oraをテキストエディタで編集しようとすると「他のプロセスで使用しているため編集不可(上書き禁止)」とか言われる。これにハマった。
Oracle関係のプロセスが掴んでいるのかと思い、全部停止して、コンパネ>サービスでOracle関係のものを全部「無効」にしてOSを再起動、それでもやはり「他のプロセスが~」とおっしゃる。

しばらく悩んでいると、ここでまたメンバーから「UAC、切ってみました?」と助け舟。
そうだ、そういえばWindows 7にはUACという今世紀最大のバグがあったんだ、と。昔もあったじゃないか、と。このブログでもアクセス数が多いじゃないか、と。

で、UACを切ってOSを再起動したら、無事編集できるようになりました(再ログオンでは不可)。
というわけで。

UACの切り方


1.コンパネを開いて、「ユーザーアカウントと~」を選択。

2.「ユーザーアカウント」を選択

3.「ユーザーアカウント制御設定の変更」を選択

4.つまみを一番下の「通史しない」に問答無用で下げきる。

これで、無事あのいまいましいUACが引っ込みます。
(もちろん、セキュリティが確保されている環境で行ってくださいね…)



しかしそもそも、今まで出来ていたことが、同じやり方で出来なくなる、というのは致命的に「エラー」だと思うんですよね。本来は、「今までと同じで、でもさらにこんなセキュリティ・コントロールが出来ますよ」ってオプショナルで提示されるべきことだと思うんだけど。しかも「他のプロセスが~」とか違う内容のエラーメッセージ出してこちらを混乱させるし。
もうWindows大嫌い。


で、Windows 7の影に隠れてるけど、Oracleはなんでバージョンアップする度にあんなにわかりにくくなっていくんでしょうかねぇ。ここまで来ると、資格試験制度を維持するため、としか思えません。

以上、愚痴でした。

2011年2月9日水曜日

WSH(WScript)を管理者として実行したい

Windows Vista以降に搭載された驚異のお節介機能、ユーザーアカウント制御(UAC)。
こちとらWindowsの管理者ユーザーとして操作してるのに、いちいちダイアログが出てきて許可しないといけなかったり、はたまた、ダイアログ無しで起動できて使えてると思ったら、なんか挙動がおかしかったり(例)。

先日、とあるメンバー制のプロジェクト管理サイトにログインするための自動ログインスクリプトをWSHで書いて、WinXPではサクサク使えていたので意気揚々とWindows 7でも使おうと思ったら、ログインは出来たものの、肝心のプロジェクト管理画面がブラウザ内に出てこない。
ひょっとしてこのサービス、Windows 7なりIE8には対応してないのかな~、と思い諦めていたら、「IEを管理者で実行しないと、中で使っているOCXが使えないから画面表示されないよ」と教えてもらった。

と言うわけでWSH内でそういったことが出来ないかとググってみたら、WSH自体を管理者権限で起動するという荒業スクリプトが紹介されていたので、自分が書いたスクリプトの一番最初にコピペしたら見事に動いてくれました(UACのダイアログは表示されるから、ボタンは1回押さないといけないけどね)。

完成版自動ログインスクリプト

ところで、「自動ログインスクリプトってなんじゃい」という方もいるかと思うので、上記「管理者権限で実行」も反映したスクリプトのソースを以下に置きました。
さすがに、今回のプロジェクト管理サイトへのログインスクリプトそのものを公開するとエライことになるんで、MyYahooへの自動ログイン版に変更してます。
My Yahooに自動ログインするWScript

使い方

  1. 上記リンク先に、WSHのソースがあるので、ソース全部をエディタにコピペ。
  2. 先頭の方にあるIDとパスワード設定部分(xxxxxと表記してるとこ)を自分のものに書き換え。
  3. 拡張子を「vbs」にして保存(例:myyahoo.vbs)。
  4. 保存したファイルをダブルクリック。

IEが起動して、自動的にMyYahooにログインできたらOK。
もちろん、MyYahooからログアウトした状態で実行すると動きがわかりやすいと思います。

ちなみに、最初にUACの鬱陶しいダイアログが出てきますが(っていうか本当はこっちがメインのネタ)、MyYahooへのログインではまったく必要ないので、コメントを見て該当箇所をザックリ削除してもOKですよ。

なるべく汎用性が高くなるようにしたので、「他のサイトにも使いたいな」って方は、主に「#」がたくさんコメントに入っているところをイジれば大体OK。

注意事項

これ、お気付きの通りIDとパスワードを思いっきりスクリプト内に平文で書いて保存しないといけないので、便利な反面、ID、パスワードが漏れやすくなる危険性があります。共用でPCを使っているような方や、Winnyとかを入れちゃってるような方は、もし使うんであれば自己責任でお願いしますね。

2010年10月13日水曜日

セキュリティがめんどくさいぞ…Windows7での開発

この夏、Windows XPから一気にWindows 7へ移行した夏デビューのボクですが、あれですね、あのー、セキュリティが厳しくなって開発環境のセットアップがいちいち面倒ですね。

Eclipseがうまく動かないのも、PostgreSQLがインストールできたのにpgAdminで接続エラーになるのも、すべて「管理者権限で実行」していなかったから、か。

というわけで、

PostgreSQLのインストーラは「管理者権限」(右クリックメニューで「管理者として実行」ってやつですね)で行いましょう。じゃないとインストールが正常に終わってサービスも開始されて、いざデータベースを作ろうと思ったら接続できない、なんてオチが待っています。

Eclipseは、毎回管理者権限で実行しましょう。じゃないと、謎のエラーに振り回されます。
起動用のEXEあるいはショートカットを右クリックして、プロパティで「互換性」タブの「管理者としてこのプログラムを実行する」にチェックを入れておくと便利です。


要は、C:\Program Files配下への書き込み権限がないユーザーで実行するとセキュリティに引っかかってNG、ということですが、こんなの常識ですよね、すいません、今さら。

分かっていても、なかなか身に付かないもんです。うっかり何度もやってしまう・・・
何かいい方法はないもんですかね。

2010年3月17日水曜日

イラストレーターが無いWindows環境でaiファイルを開く方法メモ

デザイナーさんと仕事しているので、ボクが仕事で利用しているWindows XP環境でも先方のMacで作ったイラレ(ai)ファイルが開けないといけない。

というわけで、同僚にaiファイルを見る方法を教えてもらったのでメモ。

----
Irfanviewでイラストレータのファイルを表示する方法について説明します。

1)IrFanViewをインストールします。
http://www8.plala.or.jp/kusutaku/iview/
からダウンロードして下さい。

2)POSTSCRIPT.dllをインストールします。
http://www.software.com/irfanview-9374-1
から「TRY IT FREE」をクリックしてダウンロードしたファイルを実行してインストール
して下さい。

3)GhostScriptをインストールします。
http://sourceforge.net/projects/ghostscript/
から「Download Now!」をクリックしてダウンロードしたファイルを実行してインストー
ルして下さい。

これで、IrFanViewでイラストレータのファイルを見れるようになります。
---

同僚に多謝。