• 締切済み

WinAPI GetDiskFreeSpaceEx について

お世話になります。 既存のWinNTServerで動いていたPERLモジュールがあります。 その中にWinAPIのGetDiskFreeSpaceExを使用してドライブ空き容量を得ていたのですが、今回ServerがVersionUpし、WinServer2003になったところ、取得できなくなってしまいました。 確かにMSDNを見てもこの関数はMicrosoft Windows NT Server 4.0 Standard Editionまでとなっているように見えるのですが、ではWinServer2003ではどのようにしてドライブ空き容量を得ることができるのでしょうか? もしくは、記述方法を変えたらこの関数でも対応可能なのでしょうか? よろしくお願いいたします。

  • Perl
  • 回答数1
  • ありがとう数2

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

期待されている回答とは違うかもしれないですが、 FSOオブジェクトを使うことで、そうしたOSの違いによるAPIの違いを吸収してくれます。 Win32::OLEモジュールを使って以下のようにドライブサイズ&空き容量を求めることができます。 #--------------------------------------------------------------- use Win32::OLE; my $fso = Win32::OLE->new('Scripting.FileSystemObject'); my $DiskC = $fso->GetDrive("C"); print $DiskC->FreeSpace . "/" . $DiskC->TotalSize . "\n";

cshoaucmoa
質問者

お礼

BLUEPIXYさん、レスありがとうございます。 perlでもFSOが使えるのですね。 その方向でも一度考えて見ます。 どうもありがとうございました。

関連するQ&A

  • こんにちは。

    こんにちは。 HPのサーバ「HP ProLiant ML110」を使っています。 このサーバにのHDDを初期化して、Windows Server 2003 Standard Editionをインストールしようと したところ、セットアップ中に 「ハードディスクドライブがインストールされていませんでした」と表示されてしまいます。 HDDは装着していますし、正常に認識しているはずです。サーバの起動時にハードディスクの容量が ***GBと表示されるので。 なお、このサーバには、フロッピーディスクドライブは付いていません。 どのようにすれば、Windows Server 2003をインストール出来るようになるでしょうか? 宜しくお願いいたします。

  • レンタルサーバ探し

    以下の条件でレンタルサーバを探してます。 cgi(perl)を使いたい。 perlモジュールが使えるところ、特に画像処理系。 画像ファイルを保存したいので、それ用の容量(10Mくらい)も必要。 どなたか詳しい方、お願いします。

  • さくらサーバ(スタンダード)への Web::Scraper(perl

    さくらサーバ(スタンダード)への Web::Scraper(perl モジュール) インストール方法で悩んでます。 いつもお世話になってます。 Web::Scraperというperlモジュールをさくらのレンタルサーバで使用したいのですが、うまくいきません。 参考にしたのは以下のサイトです。 http://houei.sblo.jp/article/35173969.html 正確にはWeb::Scraperはインストールできましたが、以下の部分で止まってしまっています。 【use lib '/home/bashi/perl/lib/perl';】 上記はモジュールを使用するときの、パスの指定かと思うのですが、参考サイトの通り、cpanでWeb::Scraperをインストールしましたが、上記パスにはモジュール等 何もインストールされていません。 別途、設定などが必要なのでしょうか。 他サイトを色々と調べてはみたのですが、当然のように上記同様のパスにperlモジュールがあるような指定がされています。 自力では解決できず、ご質問させていただきました。 何かご教授いただけませんでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • 私のプロバイダに対する用件(自宅サーバーからプロバイダに移行)

    以前、自宅サーバーしていたのですが、夜がうるさいので現在プロバイダーに置くことを検討しております。 XEONのデュアルサーバーで Perl, MySQL Apacheという環境でホームページを公開しておりました。 なにぶん自宅サーバーなので環境は自分で勝手に変えられるので不満はないのですが、うるさく安眠できないので良いプロバイダを探しています。 現在、さくらインターネットのスタンダードのお試し期間中ですが、データベースが1個しか作れない(しかもIDの名前)なので、いきなりパンチをくらましたが、他のプロバイダもそんな感じでしょうか? できれば自分に合った良い条件にホームページを置きたいのです。 さくらのスタンダードは年額にすると5000円+1000円(初期費用)の6000円で、MySQLとPerlなどのCGI容量は1GB使えて、コントロールパネルが使いやすくてPerlのモジュールも十分使えてしかも価格的に安い方なので、よいプロバイダと思いますが、データベース1個はキツイです。 私の優先順位 価格 ・レスポンスの良さ ・データベースが使え(MySQL) (PostgreSQLでも良い)てデータベースが複数使える2個以上 ・環境が整っている(コントロールパネルその他Perlモジュールの自由度)開発しやすい ・ドメイン+リダイレクト・エリアス機能がある ・電話サポートがある ----- 以上は必須 ---- ・SSLが使える です。 お勧めのプロバイダがございましたら教えてください。

  • Win2003サーバーでのドライブ領域拡張について

    Windows2003サーバにて既存ドライブの容量が逼迫してきたため、USBハードディスクを接続し、 容量の拡張を実現したいと考えてます。 良きアドバイスをお願い致します。 下記の通り、Dドライブの容量が逼迫(共有フォルダを作成し、N/W上のPCからファイルを保存) してきたため、新規に増設したFドライブの空き容量をDドライブに分配しようと試みました。 分配方法は、標準搭載されている「ディスクの管理」ツールからFドライブ上にてDドライブ上の 共有フォルダをマウントする方法(※)を取りましたが、 「ボリュームは空のフォルダのみマウントされます。」となり、実現不可でした。 別の方法にてDドライブ(共有フォルダ)の容量を増やす方法をご存知の方、ご教授願います。 ※参考URL http://www.atmarkit.co.jp/fwin2k/win2ktips/985junction/junction.html <使用サーバ内容> OS:Windows Server 2003 R2 Standard Edition Service Pack 1 ドライブ構成:  Cドライブ(内蔵)⇒容量:50G(80%使用)、用途:OS、アプリケーションインストール  Dドライブ(内蔵)⇒容量:100G(80%使用)、用途:ドキュメント保存  Fドライブ(外付)⇒容量:1T(0%使用) サーバ用途:イントラネット上の各PCから作成したドキュメントを保存する、ドキュメントサーバ。         保存方法は、サーバ上に共有フォルダを作成、そこにファイルを保存。 以上

  • パソコンに CGI サーバー を立ち上げるには?

    よろしくお願いします。 今、パソコン内に CGI サーバー を立ち上げようとしています。 これは、サイトを作成するにあたって、 abcdef.cgi というファイルを サーバー へ アップロード する前の動作確認用です。 http://www.prism-web.com/cgi/server.html このページを見ながらやっているのですが、どうも上手くいきません。 このページが作成された時とはダウンロードできるプログラムが違うためかもしれません。 実際に私がダウンロードしてインストールしたのは、 ・Xitami Install kit のWin 95/NT standard 版 ・ActivePerl ActivePerl 5.8.0 build 805 Windows AS package です。 ActivePerl のほうは、説明で書かれているものとは違うと思います。 ActivePerl-5.8.0.805-MSWin32-x86.zip というものなので。 さらに、説明では、 「 C:\Xitami 」、「 C:\Perl 」 へインストールすると書かれていましたが、 私の場合は、C ドライブの容量が少なかったため、 「 D:\Xitami 」、「 D:\Perl 」 へインストールしました。 この結果、Perl-v のコマンドにも反応しませんし、 実際に abcdef.cgi を開こうとしても、 ファイルをダウンロードする画面が開くだけです。 もしご存知の方がいましたら、アドバイスを宜しくお願いします。 ※私は、Window98SE を使っています。

    • ベストアンサー
    • CGI
  • パーテーションサイズの変更

    WindowsNTサーバーからwindows2000サーバーにアップしたのですが、 NTの時にはCドライブとEドライブがあったのですが 2000にあげたらCドライブしかありません。 Eドライブはなくていいのですが その分の容量をCドライブにもっていきたいのですが、 Cドライブのサイズを変更するにはどうしたらいいでしょうか?

  • レンタルサーバーのOSの細かい情報を得るCGIプログラム

    レンタルサーバーのOSの細かい情報を得るCGIプログラムってなんの関数なりモジュールなりを呼べば良いのでしょうか? 環境変数とかだと、漠然と「UNIX」とかいう役に立たない情報が返ってくるだけなのですが、細かく知るときには、どうかくもんなんでしょう? C/C++もしくは、Perlでお願いします。

    • ベストアンサー
    • CGI
  • Perlからcmdへの操作

    先にWinAPI GetDiskFreeSpaceEx について を質問したものです。 いろいろ調べていくうちにWinAPI GetDiskFreeSpaceExが原因ではなくその前にそのウェブが動いているカレントドライブを下記の記述で取得しているのですが、それがうまくいっていないことがわかってきました。 そのcgi内の記述は $drv = `cmd /c cd`; です。文法的にも問題なく、また、Win2000にIISをいれて動かした場合、この記述でちゃんとカレントドライブが取得できるのに、Win2003Serverでは取得できません。サーバーのバージョンの問題というよりも環境の問題なのではないかと思ってきたのですが、あいにくほかのWin2003Serverでテストに使えるものもなく、困っています。 上記記述をCGI出なくライブラリにしてコマンドライン実行した場合、2003サーバーでもちゃんと取得できます。よってPerlからcmdへのパスが通っていない、であるとか(そんなの必要ないと思ってたのですが・・・)そういった環境に問題があると感じています。 何か思い当たる点がありましたら教えてください。

  • メールのデコード方法について教えてください

    受信メールから、本文と添付ファイルを取出してサーバー内の ディスクへの保存するというperlスクリプトの作成を考えています。 そこでbase64のデコードの為のモジュールとしてMIME::Base64 (Version: 3.07)を使いたかったのですが、MIME::Base64が対応する のはperlのバージョンが5.008以上のようでした。 (サーバー内のperlは5.004です) 既存のプログラムへの影響を考えてperlのバージョンをあげずに 受信メールの本文と添付ファイルをデコードする方法はありましたら 御教示お願いします。 (必要な情報が不足していましら御指摘下さい)

    • ベストアンサー
    • Perl

専門家に質問してみよう