Windowsプログラミングにおいて、デフラグ用のAPIが用意されていないようですが、
http://www.atmarkit.co.jp/fwin2k/win2ktips/079re …
のようなツール(Diskpeer 5.0)はどのように実行しているのでしょうか?
また、バックグランドで実行も可能なようですが、GUI画面を出さずにこんなことが可能なのでしょうか?
ご存知の方、アドバイスをお願いします。
No.2ベストアンサー
- 回答日時:
No.1です。
以下、引用回答で。
>>・DiskpeerはWindows標準のデフラグを使っているわけではありません。
>独自にデフラグ作業をプログラミングしているという認識で正しいでしょうか?
はい。
>>デフラグと言うのはディスク内でのファイルの配置を強制的に変更するような強力な処理です。
>・この手のプログラミングは主にどんな言語を使用するまたはしなければならないのでしょうか?
まぁ、C/C++で書くことが多いでしょうね。Delphiという選択肢もあったかもしれませんが。
>・C言語などでDLLを作成し、それをC#のような言語で実行するような形なのでしょうか?
C#を使うと.Net frameworkというランタイムモジュールが別途必要になるので、
(フリーソフトなどの)配布ソフトウェアでは嫌われるようです。
また、CとC#で連携するくらいならC++で全部書いた方が手っ取り早いと思います。
>・作成手段としていくつぐらいその方法がありますでしょうか?
後述。
>・C言語でデフラグのような低級プログラミングする場合はVisual Studioでも作成可能でしょうか?
充分可能です。
デフラグのようなツールを作るときに考えるべき点は、
GUI部とディスクアクセス部があることですね。
後者はAPIを使えばいいので(細かい問題を除けば)余り
使用言語に拘る必要はないでしょう。
前者はどこまで凝るかにもよりますが、.Netを使うまでもないので
MFCやAPI直接呼び出しでも充分でしょう。
その辺りは、製作者の経験と好みで宜しいかと。
というわけで作ろうと試みること自体はそれほど難しくありませんが、
安全にデフラグ処理を行なうには数多くの問題点を解決していかなければなりません。
慣れたプログラマが作るとしても、専業で携わっても(デバッグ、運用試験を含めると)一年で終わるかどうか。
ましてその間に何度ファイルシステムを飛ばすことになるやら。
そういったことを考えると、VisualStudioの使い方を他人に聞くレベルでは全くお勧めできません。
単に定期的にデフラグしたいだけでしたら「システムツール」の「タスク」でも使ってみたらどうでしょう。
No.1
- 回答日時:
・デフラグは、APIレベルでやるような処理ではありません。
APIというものは一般的に、単純な作業を行なうために用意されています。
・DiskpeerはWindows標準のデフラグを使っているわけではありません。
GUIを出す、出さないは単にそのプログラムの設計次第と言うことになります。
デフラグと言うのはディスク内でのファイルの配置を強制的に変更するような強力な処理です。
ですからドライバのインストール作業同様、一般ユーザ権限では実行できないようになっているわけです。
この回答への補足
charmer29-2さん、ご返答ありがとうございます。
できるところまでいいのですが、もう少し質問させてください。
>・DiskpeerはWindows標準のデフラグを使っているわけではありません。
独自にデフラグ作業をプログラミングしているという認識で正しいでしょうか?
>デフラグと言うのはディスク内でのファイルの配置を強制的に変更するような強力な処理です。
・この手のプログラミングは主にどんな言語を使用するまたはしなければならないのでしょうか?
よくドライバ等はVC++でないと作成できないとお聞きしますが。。。
・C言語などでDLLを作成し、それをC#のような言語で実行するような形なのでしょうか?
・作成手段としていくつぐらいその方法がありますでしょうか?
・C言語でデフラグのような低級プログラミングする場合はVisual Studioでも作成可能でしょうか?
可能であれば、具体的にVS.netを立ち上げ【新しいプロジェクト】ですすみ、テンプレート欄でどのアプリケーション(Windowsアプリケーションなどのアイコン)を選択すればよいでしょうか?
もし、ご存知でしたらご教授お願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Python で筆算のプログラミング...
-
procってなんですか?
-
プログラミングの課題で困って...
-
アセンブリ名とは??
-
scanf_s 使い方 cc言語
-
プログラミングの質問です。x^2...
-
プログラミングを使ったYoutube...
-
宣言の構文エラーが出ます。
-
MFCとC++/CLIとの比較
-
C言語で個人の趣味では何が出来...
-
高校生でMacbookを買ってしまっ...
-
プログラミングって何ができるの?
-
Fortranのフリーソフトってあり...
-
mp3のファイルフォーマットを探...
-
最適な撮影位置を求めるアルゴ...
-
プログラミング教室に入ったら...
-
Visual Studio Codeについて
-
C言語、C+、C++、C#の違い
-
VBSでDim、Private、Publicの違い
-
UNITY Float型の接尾辞fって
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アセンブリ名とは??
-
VBAプログラミング
-
Visual Studio Codeについて
-
procってなんですか?
-
exeファイルを作ったり改造した...
-
リピート再生が出来ません
-
CSVデータの"(ダブルクォーテ...
-
C言語で個人の趣味では何が出来...
-
Cプログラミングでハングマンゲ...
-
push any key で終了する方法?
-
作業工程 SDとMD
-
プログラミングでArduinoのc++...
-
OpenCVで音声は扱えるか
-
曲を作るのにプログラミングっ...
-
VBA フォルダ アクセス権限付与
-
Delphiでxmlファイルを読み込む...
-
プログラミングの質問です。x^2...
-
久しぶりのプログラミング
-
社内イントラネットのページが...
-
小学1年生の子です。塾に行かせ...
おすすめ情報