2008/08/22(Fri)キーボードだけでアプリを昇格 on Vista

2008/08/22 13:44 Software::Windows
Vista発売当初から、「あれ?」と思っていたことなのだが、アプリケーションを昇格状態で起動するのって、わざわざショートカットを右クリックして、"管理者として実行する..."を選ぶしか方法がないのかなぁ、キーボードだけで起動する方法無いのかなぁ、と思っていたのだが、たまたま調べて発見した。

cmd_from_startmenu.png


Vista新設のこのスタートメニューのテキストボックスに目的のアプリを入力(例えばcmd)し、Ctrl+Shift+Enterを押すと……


昇格ダイアログが開いて、Alt+Cを押せば昇格したアプリを立ち上げられる。
おぉ、こりゃ便利。


が、問題はクラシックメニューにしてるとこのテキストボックスが出ない&Win+Rで出現するダイアログではCtrl+Shift+Enterが有効でないようなので、まだ何か探さないとなぁ……というところである。
runas /trustlevel:0x20000とかじゃあ昇格できないしなぁ…。

2008/08/22(Fri)バッチファイルTips "%~dp0"

2008/08/22 13:20 Software::Windows
Windowsには、ちょっとした処理をやらせるのに便利なバッチファイルというのがあるが、VistaからのUAC(ユーザーアカウント制御)で困っていた点があった。

というのが、VistaでUACがONの場合にシステムフォルダのような昇格が必要なフォルダへの書き込みを行った場合、
  • 昇格しないとカレントディレクトリは実行位置だが、書き込めない
  • 昇格すると、カレントディレクトリが強制的にC:\Windows\System32になる
という点である。

カレントディレクトリが分からないとなぜ困るかというと、カレントディレクトリにあるファイルを特定のフォルダへコピーさせるのが厄介だからである。

で、色々探してたら、いいコマンドがあった。
cd /d %~dp0
詳細部を説明していくと
cd
Change Directoryコマンド
/d
現在のドライブ名も一緒に変更する(これが無いとドライブを跨いだcdが不可能)
%0
%1, %2, %3...で第1, 2, 3,...引数を取得できるように、%0で実行パスが取得できる
~dp
dでカレントドライブ、pでカレントディレクトリ、~で""を削るという指定。~が無かった場合、中途半端に"が残ったりするので。*1


というわけで、バッチファイルの先頭には
@echo off
cd /d %~dp0

からはじめる癖をつけようか…。

参考元:な○の 屋: Vista エピソード その1

*1 : %1で受け取ったディレクトリにa.txtを作りたい場合、%1a.txtとすると、"C:\abc\"a.txtという風になる可能性がある。これを防ぐため、%~1a.txtとすれば、C:\abc\a.txtとなる。

2008/07/30(Wed)screenでデタッチできん

2008/07/30 16:02 Software::Linux
今日は雷のせいで、よくサーバーへのアクセスが切れる。
というのも、サーバー側のFTTHモデムが瞬停に耐えられず再起動し、IPアドレスが変わってしまうからだ。まぁこれはしょうがない。

上位DNSまでのDNS浸透は速いものの、やっぱり末端に広がるには時間がかかるようなので、とりあえずhostsファイルに書いてやったり*1で対応するのはいいとして、GNUのscreenがattached状態になったままで再アタッチできない事がたまにある。
いつも、気がついたらdetachedになってるんだが。

ちなみに、autodetachはonである。
[kero@spinel](2)$ screen -ls
There is a screen on:
        26323.pts-0.spinel      (Multi, attached)
1 Socket in /var/run/screen/S-kero.
となったので、しょうがない、リモートデタッチするかと。
[kero@spinel](3)$ screen -d
[26323.pts-0.spinel detached.]
が。
[kero@spinel](4)$ screen -ls
There is a screen on:
        26323.pts-0.spinel      (Multi, attached)
1 Socket in /var/run/screen/S-kero.
何度やってもscreen -dはdetachedと出るばかりで直らん。
[kero@spinel](9)$ screen -r
There is a screen on:
        26323.pts-0.spinel      (Multi, attached)
There is no screen to be resumed.
resumeもできん。
[kero@spinel](10)$ screen -D

[kero@spinel](11)$ screen -D
  • Dにしたら今度は反応が返ってこない。Ctrl+Cが効くだけマシかもしれんが……。

と、この記事を書いている間に
[kero@spinel](12)$ screen -ls
There is a screen on:
        26323.pts-0.spinel      (Multi, detached)
1 Socket in /var/run/screen/S-kero.
となっていた。

あれか、焦って再アタッチせずに、ゆっくりしてきてね!!!ってことですね、きっと。
解決編をご覧ください。

*1 : C:\Windows\System32\Drivers\etc\hosts

追記: 最後に打ったコマンドをウィンドウタイトルに 2008/07/30

検索してたらこちらで見つけた。
.screenrcに
shelltitle "$ |bash"
と付け足して、.bashrcを
OLD_PS1=...(元の設定)...
SCREEN_TITLE='\[\033k\033\\\]';
PS1="${SCREEN_TITLE}${OLD_PS1}"
てな具合。OLD_PS1の部分は無論、埋め込みでも構わない。
zsh使いの場合は、↑サイトを参考に。

2008/07/25(Fri)BSOD 0x3b

2008/07/25 12:06 Software::Windows
うちのメインマシン(OSはWindows XP Professional x64)でよく強制リセットが起こる。
頻度は1週間に1回くらい?
ニコニコで動画再生を終えた直後とか、Media Player Classicである曲の再生を終えた直後とか、VSを操作したときとか、発生箇所は様々。

つまり、全く原因がわからない。
0x3b.png

イベントビューアではこの通り。
0x3b_eventviewer.png

種類: エラー
分類: System Error (102)
イベントID: 1003

エラーコード: 000000000000003b
パラメータ1: 00000000c0000005
パラメータ2: fffff8000127e1ce
パラメータ3: fffffadf5106ffe0
パラメータ4: 0000000000000000
0x3bでググってみたけど、ドライバを更新したら?くらいの情報しか見当たらなかったので、ダメ元でMicrosoft Updateを実行。

0x3b_msupdate.png

で、前々から出てたLANカードのドライバを入れてみる。
この更新プログラムのインストールをお勧めします。コンピュータ上にある、このドライバの適用先のデバイスが無効になっていると考えられます。
とか訳わからんメッセージが出てるけど(実際はちゃんと動作してる。けどLANポートには何も刺さってない)、とりあえず導入してみた。
これで改善されるだろうか?

相変わらず落ちる 2008/07/29

今回も0x3b。
LANドライバは関係ないようです。

(※重要な更新プログラムが非表示になってるのは、IE7を入れたくないからです…。これは本質とは関係ない。)

2008/07/25(Fri)Word2007から版の管理がない

2008/07/25 10:49 Software::Windows
なぜ削った…この機能……。
特定の日時の更新状況を後から参照できて便利だったのに。

docxのフォーマットの制約で、複数のドキュメント版を管理できないということなら、ひどい話だ。

版の管理機能について - Word - Microsoft Office Online


しょうがないので、「変更履歴の記録」で対処しようか。
とりあえず「初版」と「最終版」の2つは管理できるようだし。