[Windows] Vista デスクトップのアイコンを小さくする
Windows Vista でデスクトップのアイコンを小さくしようとして,「クラシック アイコン」を選択しても,まだ大きくて嘆いていました.
調べてみると,ちゃんとありました.
そのアイコンサイズ調整方法とは,「デスクトップで CTRL を押しながらマウスホイールを回す」だけです.Internet Explorer やその他のいろいろなツールで文字サイズや画面のズーム率を変更するのと同じ操作です.
[Windows] Windows から 139/tcp 以外で Samba と通信
実現する方法と手順が見つかりました.
なるほど,ループバックインタフェースを追加するわけですか... 私には考えもつきませんでした.
では手順通りに実践してみます.ここでは,ある Windows マシン(192.168.1.1/24) から 192.168.1.2:50139/tcp を listen している Samba に接続するとします.
- Windows マシン上にネットワークアダプタ "Microsoft Loopback Adapter" を追加します.
- 追加したアダプタの IP アドレスを,他のアダプタと別のネットワークに属するように設定します(Ex: 192.168.2.0/24).
- stone をインストールします.
- 次のように,フォワード先のホストとポート番号を第 1 引数に,フォワード元のホストとポート番号を第 2 引数として stone を起動します.
C:\>stone 192.168.1.2:50139 192.168.2.1:139 Aug 18 07:24:39 start (2.2e) [308] Aug 18 07:24:40 stone 288: 192.168.1.2: <- 192.168.2.1:netbios-ssn
これで,Windows 側から UNC (\\192.168.2.1) でアクセス可能になります.
試した結果,成功しました.
... Microsoft さん,ポート番号くらい設定できるようにして Yo!
[Windows] Windows で Ctrl+H が Backspace!
アクセラレータキーについてを見ていると,次の記述に驚きました.
Ctrl+HもBackspaceも同じASCII文字に変換されるので、仮想キーコードで判定します。
まじですか... 確認はしていませんが,あの Windows にこんな粋な機構が内蔵されていたなんて.
[Windows] Windows 2000 でユーザごとに関連付けを変更
Windows XP だけでなく,Windows 2000 でもできました.
HKEY_CURRENT_USER\Software\Classes 以下に HKEY_CLASSES_ROOT と同じように記述するだけです.
関連付けを変更するためだけに管理者権限を要求するインストーラの消滅を願えます.
[Windows] sudod
何とか RunAs サービスと同じことができるようになりました.ユーザ名とパスワードをハードコーディングしたままですけど.
RunAs サービスと同じでは,sudo for Windows 2000/XP と変わりませんので,いろいろやらないとダメですね.
例えば... サービスのログをイベントログに書くようにするとか,sudo を起動したコンソールと同じコンソールを共有できるようにするとか.
前者は楽ですけど,後者はかなり怪しい感じです.DuplicateHandle によると,コンソールの標準入出力ハンドルは同じプロセス内でしか複製できないということが書かれているのです.
これができてくれないと,sudo cmd で新しいコンソールが起動してしまって使いづらくなりますねぇ.もとい,私が使うだけと割り切って諦めるという手も使えそうですけど.
[Windows] sudod
特定のアプリケーションを管理者権限で使用するための AdminExec というソフトウェアは既に存在しますが,これが有償だったのが,私が sudo を最初に作るきっかけなのです.
... というのはさておき,この AdminExec, マニュアルを見る限り,「Administrator のパスワード」を要求してきません.パスワードを使用しないというのは非常にいいことですが,これではアプリケーションの動作ユーザが AdminExec 経由と,Administrator でログオンした場合とで異なるため,起動したアプリケーションの設定が別々の場所に記録されてしまうことになります.
SYSTEM アカウントは,Default User のプロファイルを使用するようになっています.一方,Administrator で通常のログオンを行った場合,当然 Administrator のプロファイルが使用されます.
確かに,動作ユーザが違うのですから,それぞれ違うプロファイルを使うことがシステム的に問題というわけではありません.むしろその方がいいでしょう.
しかし私は,Administrator でログオンした場合も,サービスから起動した場合もアプリケーションが同じ設定で動くことを望んでいますし,Administrator の権限で十分動作するアプリケーションを,より強い権限の SYSTEM として動作させることにも抵抗があります.
sudod を作る際,SYSTEM ならどんなユーザにもパスワードなしで切り替えられるだろう,と思っていました.しかし,Windows はそんな UNIX 的な乱暴を許してくれませんでした.
他のユーザ云々,の時点で,LogonUser API を用いなければなりません.加えて,ここでパスワードを必要としないアプリケーション,を作るためには... どう頑張っても平文ないしは暗号化パスワードをプログラム内部に保持するしかありません.
ましてや本物の sudo のように,任意のユーザとして実行できるようにしようとすると... とんでもないことになるのが目に見えます.
あぁ! suid 作って下さい Microsoft 様.
セキュリティの面では今のままの方がいいんでしょうけど,RunAs の度にパスワードを入れなければならないなんて,耐えられません.
[Windows] Windows2000 でもユーザ毎の関連付けを設定できそう?
レジストリの HKEY_CLASSES_ROOT の実体は? をの中にある次の 1 文に目が止まりました.
Windows 2000 ではこのキーに加えて、HLEY_CURRENT_USER \SOFTWARE \Classes キーを合成したものを、HKEY_CLASSES_ROOT として表示しています。
関連付け情報は HKEY_CLASSES_ROOT のものを用いますので,Windows 2000 では,Windows XP と同様,ユーザ毎にアプリケーションの関連付けを設定できることになります.
ただし,私は Windows 2000 上でこれを設定するツールを知りません.
そういえば maxwell にログインしているとき,「Windows XP でもできるのだから,Windows 2000 でもできるんじゃないか」と思いながらこの関連付けを手動でやったようなやらなかったような...
[Windows] Windows で動く今はフリーソフトウェアの X server
crackbrain 氏が言っていた Windows で動作するフリーの X server をふとしたことで発見.
へぇ,いつの間にこんなのができたんでしょう.将来シェアウェアになるかも知れないようなので,私は Cygwin + X.org で行きます.
[Windows] MPlayer インストール
MPlayer のサイトから,MinGW でコンパイルされたバイナリファイルが入手可能でした.Codec と共に入手して,解凍してみました.確かに MPlayer.exe が入っています.
手近な Mpeg ファイルを突っ込んでみますと... きちんと再生されました.Real Media のファイルも... OK です.
[Windows] Windows XP SP2 の DEP 機能はもっと昔から作れたはず
研究室のノートマシンに Windows XP Service Pack 2 をインストールしてみました.何やら DEP なるものがインストールされたようです.
DEP とは,データ領域としてマークされたメモリの内容をコードとして実行しないようにする機能です.
AMD64, IA-64 アーキテクチャのプロセッサ,Prescott コアの Pentium 4,Pentium M プロセッサは,メモリのデータがコードかデータかをページ単位で設定することが可能(NX-bit を利用する)で,Windows XP SP2 のハードウェア DEP 機能は,それを利用しています.
ちなみに,今回 SP2 をインストールしたマシンは Celeron プロセッサでしたので,ハードウェア DEP 機能を利用することはできませんでした.
ここで私はふと疑問に思ったわけです.「IA-32 アーキテクチャはデータセグメントのデータを実行することはできないんじゃなかったっけ?」と.なお,ここから先は一般的な話ではありません.
調べたところ,IA-32 インテル(R) アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 上巻:基本アーキテクチャ および IA-32 インテル(R) アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 下巻:システム・プログラミング・ガイド に,次の事柄が明記されています.
命令フェッチは,コード・セグメントから実行しなければならない.
CS レジスタには,コード・セグメントのセレクタだけをロードすることができる.
命令は,実行可能セグメントに書き込むことはできない.
つまり,IA-32 アーキテクチャではデータセグメントのメモリデータをコードとして実行することはできないようになっていますし,プログラムからコードセグメントのデータを変更することも不可能なのです.
このように,プロセッサの仕様を見ると,セグメント機構によるハードウェア DEP が実現できそうな気がしますが,Windows XP SP2 ではページング機構によるハードウェア DEP のみを利用しています.これから 64 ビットのプロセッサに移行するので,32 ビットの世界を切り捨てて(コードを書くのが面倒?)しまおうということなのでしょうか? あるいは,DEP 機能を 64 ビットプロセッサのメリットとして売り出させて欲しいと,Intel から Microsoft への要望があったのでしょうか?
ところで,IA-32 アーキテクチャではデータセグメントのデータをコードとして実行できないと書きましたが,それなら何故 Windows のアプリケーションではバッファオーバーランが起こるのでしょう.
これに対して私は,Windows が外部プログラムに対して,同じリニアアドレスから開始し,属性(コード/データ)だけが異なる 2 つの異なるセグメントセレクタをそれぞれ CS と DS(=SS) にロードしているからだと考えています.Windows が IA-32 の提供するセグメント機構をフル活用していないのです.現行のアプリケーションで最も利用されているフラットモデル(昔でいうスモールモデル)はそういうメモリモデルなのですが,完全にコードとデータを切り離したメモリモデルを新たに作っていれば,バッファオーバーランは起こらなかったのでしょう.何だか勿体ない話ですね.
[Windows] SilenTek をインストール
AOpen の SilentTek (M/B の温度・電圧をモニタして,ファンの速度を調整するユーティリティ)を入れてみました... ちょっと温度が気になったもので.しかし,SilentTek の表示は恐るべきことに...
「System Temperature = 47.0 Celsius」「CPU Temperature = 43.0 Celsius」
CPU 温度の方が低いらしいです.あまり当てにならないようです.