dwgx@blog:~$dwgx
> cd ../posts

WinQuickTools: Windows 向けクイックメンテナンスツール集

// created

WinQuickTools は Windows 向けのクイックメンテナンススクリプト集で、本来なら一手で済むはずなのにシステム側が何段階もの手順にしてしまう操作ばかりを狙って集めている。たとえば exe に「管理者として実行」を設定する場合、プロパティを開いて互換性タブに入りチェックボックスを入れる、と何層も入れ子になっている。一つなら我慢できるが、まとめてやると面倒だ。このツールボックスはこの手の操作を、ドラッグ一回かダブルクリックで走るところまで圧縮する。

インストーラー型のソフトは作らず、すべてスクリプトだ。ドラッグかダブルクリックでそのまま実行、環境構築なし、依存の取得なし、build なし。使う .bat だけをダウンロードし、使い終わったら削除してゴミを残さない。対象プラットフォームは Win10/11、エントリーポイントはすべてバッチで、@echo off で始まり、CRLF 改行、BOM なし。この辺りのディテールに気を配らないと、日本語出力やパスがおかしくなる。汚れ仕事はインライン PowerShell(powershell -NoProfile -ExecutionPolicy Bypass)に任せ、それ以外は reg.exe のような標準コマンドで済ませる。外部依存はゼロだ。

今のところ実際に動くのは SetRunAsAdmin だけで、.exe.lnk を一括で常に管理者実行に設定する。ファイルをまとめてスクリプトのアイコンにドラッグするか、ダブルクリックしてからパスをドラッグして Enter を押す。仕組みは二通りに分かれる。.exeHKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\LayersRUNASADMIN フラグを書き込み、既存の互換性設定は保持して他を上書きしない。.lnk はショートカットファイルのヘッダー内にある管理者フラグビットを直接書き換える。以降は起動時に通常どおり UAC が出る。

実行が終わると日本語で簡単なサマリーを出し、成功・失敗・スキップを分けて並べる:

[成功] 已处理:路径
[失败] 原因:具体原因
[跳过] 不支持:路径

结果:成功 1 个,失败 0 个,跳过 0 个。

自動化に組み込みたい場合は RUNASADMIN_BAT_NOPAUSE=1 を設定すれば、終了時に pause しない。

妥協しないと決めているいくつかの原則: 日本語とスペースを含むパスに対応する、一度に複数ドラッグして一括処理する、出力はすべて日本語で成功・失敗・スキップに分ける、高リスク操作は必ず確認を取り黙って実行しない、保持できるユーザー設定は保持する。この先足したいものはどれも自分が毎日使うものばかりだ。カレントディレクトリでのターミナルやエクスプローラー起動、一括リネーム、パスのコピー、ping/ポート/DNS チェック、確認付きの一時ディレクトリ削除など。進捗はまだ早い段階で、動くのは SetRunAsAdmin が雛形を示しただけ、残りは計画中だ。