UWSC備忘録:とにかくクリックでタスクスケジューラの設定をする!(CLKITEM)
やべぇ~1ヶ月以上も更新してなかった。
決してめんどくさくなったわけではないです。忙しかったんです。あれこれ。
半分ウソですが、お仕事でUWSCを使う羽目になり苦労したのでしばらくUWSCメインで書いていくよ。
今回は、クリック!!
UWSCでは、マウスでの座標クリックとCLKITEMのオブジェクトクリックがあるが、座標クリックはちょっとでもずれると使えないのでCLKITEMでいく。
それで何をするかだが、タスクスケジューラのタスクの登録をしようと思う!!
偉い人はきっとコマンドラインでやってのけるであろう作業をあえてUWSCで。
実は諸事情によりタスクをフォルダ分けする必要が出てそれをコマンドラインでやるやり方が分からず死にそうになってUWSCでやってしまった。
俺を責めないで下さい。
それでははじまり。
今回はWindows10でやってるんで、それ以外のOSだとそのままでは動かないかも。
まず、登録するXMLファイルを用意。これは難しくないのでググッて作ってね。
それから、1~2行で、タスクスケジューラを起動してそのIDをゲット!
IDをゲットすると、クリックするのに役立つよ。
4~6行でフォルダ作成位置をクリックしてフォルダ作成ウィンドウ開きまたIDゲット!
7~8行でフォルダ名入れてエンター押す。
そんな感じに色んなとこクリックしたり、文字入れたり、キー押したりすると出来上がり。
取り敢えず、CLKITEMの使い方はUWSCでググると出てくるので割愛。
ただ、後ろのCLK_ACCとか正直良くわからないが、上手く動かない時に変えると動くこと有り。
ボタンの名前などがちょっと違うせいで動かない時はCLK_SHORT。
フォルダなどのツリー表示をクリックするときはCLK_TREEVEW。
色々やってもダメなときはCLK_ACCを使ってみた。
○今日のコード
- exec("mmc taskschd.msc /s")
- id=getid("タスク スケジューラ",,-1)
- file1="c:\test1234.xml"
- CLKITEM(id, "タスク スケジューラ (ローカル)\タスク スケジューラ ライブラリ", ITM_TREEVEW)
- CLKITEM(id, "新しいフォルダー", CLK_ACC)
- id2=getid("新しいフォルダー名の入力",,-1)
- SENDSTR(id2, "NewTaskFolder")
- SCKEY(id2, VK_ENTER)
- SLEEP(3)
- CLKITEM(id, "タスク スケジューラ (ローカル)\タスク スケジューラ ライブラリ\NewTaskFolder", ITM_TREEVEW)
- CLKITEM(id, "タスクのインポート", CLK_ACC)
- id2=getid("開く","#32770",-1)
- sleep(1)
- SENDSTR(id2, file1, 1, True, True)
- sleep(1)
- CLKITEM(id2, "開く", CLK_BTN)
- CLKITEM(getid("タスクの作成",,-1), "OK", CLK_BTN)
- sleep(1)
- CLKITEM(id, "タスク スケジューラ(ローカル)\タスク スケジューラ ライブラリ", ITM_TREEVEW)
- SCKEY(id, VK_F5)
使い方調べるのもいいけど取り敢えずやってみろ。
かしこ
禁断のWindows10 インストールメディアいじり その4
その3でUSBメモリを作ったけど物足りないというあなた。
その4もありますよ。
今回は、USBメモリに更に一手間加えておいしく頂こう!!
具体的には、USBメモリから起動後、複数の応答ファイルを選択できるようにする。
やること1
Dismを使って、WinPEの起動イメージ(USBメモリ内のsources\boot.wim)をこじ開ける。
正確にはC:\mountというフォルダを作ってマウントしてる。
WinPEとは、プレインストール環境とやらで、WindowsOSのインストールメディアを起動させるOSの事を言う。(それだけじゃないけど)
やること2
起動イメージをマウントしたらその中に自動実行スクリプト用の設定ファイルを作る。
やること3
自動実行スクリプトから呼び出すバッチファイルを作る。
やること4
バッチからさらに呼び出すバッチを作る。
やること5
Dismでこじ開けたやつを閉じつつ保存する。
要は、変更した箇所を含めてboot.wimファイルに上書き保存するってこと。
俺が何を言ってるかわからないだろう。俺もわからん。…だめじゃん。
まず、2の自動実行スクリプトだが、インストールメディアのWINPEは起動後すぐにインストール用のSetup.exeを実行してしまう。
それを、させないように設定ファイルに3のバッチを呼び出す様に設定してあげるわけだ。
そして3から4だが、別に3と4をくっつけてもいいが、後々応答ファイルを増やした時にバッチを書き換える必要が有るため分けたほうが便利なのだ。わからんだろ。
なので適当に説明画像を見て。
要は、boot.wim 内のファイル2,3はDismでこじ開けないと編集できないわけ。
方や、USBメモリ内の3や応答ファイルはいじり放題。
なので上のようなめんどくさいやり方をしてるわけだ。
未来の楽のために今はめんどくさい。
後は、起動させるだけ。
○今日のコード
★Dismでこじ開け(やること1)
※USBメモリのドライブレターをFとして
※管理者権限のDOSプロンプト上で実行してね
MD C:\mount
Dism /Mount-Wim /WimFile:F:\sources\boot.wim /index:2 /MountDir:C:\mount
★C:\mount\Windows\System32\winpeshl.ini を作る(やること2)
※テキストファイルを作ってね
[LaunchApp]
AppPath = %SYSTEMROOT%\System32\CallCustomSetup.bat
★C:\mount\Windows\System32\CallCustomSetup.bat を作る(やること3)
※テキストファイルを作ってね
@FOR %%I IN (C,D,E,F,G,H,I,J,K,L,M,N) DO @(
IF EXIST %%I:\AutoUnattend* CALL %%I:\CustomSetup.bat
)
★CustomSetup.bat をUSBメモリ内に作る(やること4)
@CLS
@ECHO エディションを選択してください
@ECHO.
@ECHO Windows 10 Home → h
@ECHO Windows 10 Pro → p
@ECHO.
:GETEDITION
@SET /P E=" > "
@IF NOT %E%.==h. @( IF NOT %E%.==p. GOTO GETEDITION )
@echo %~dp0setup.exe /unattend:%~dp0Autounattend_w10%E%.xml
@%~dp0setup.exe /unattend:%~dp0Autounattend_w10%E%.xml
★Dismで閉じつつ保存 (やること5)
※管理者権限のDOSプロンプト上で実行してね
※マウントフォルダやファイルを開いてたら閉じてね
Dism /UnMount-Wim /MountDir:C:\mount /comit
色々書いたが、文才なくてすまん。
かしこ
禁断のWindows10 インストールメディアいじり その3
その3はUSBメモリを作成。
その2でメディアを作ったけどまぁめんどくさいよ。
なので、USBメモリを作ったほうがいいよってことで今回。
でもこれは皆さんやったことがあると思うのでネタとしては弱し。
あくまで備忘録回なので怒らないで。
それに最近だとフリーソフトとかでこんな感じのことを簡単にできるのでそれをググったほうが速いと思うわ。
使うのは前にUSBメモリリードオンリー化に使ったDiskpart。
前の使い方はDOSバッチ内での実行だったが今回は直接DOSプロンプトから。
やることは超簡単。
USBメモリを起動可能にする→USBメモリにその2のメディアの中身を全部コピる。
以上。
以下の方法で作成し、USB起動ができるPCで起動する。
見ればわかるので説明は割愛し注意点だけ。実行した時の画像は載せとくよ。
※3行目のcleanはUSBメモリを消すコマンド。なので間違って他のディスクを消さないように気をつけよう!
※出来た後USBブート順などを設定する必要があるかもよ
※UEFIで使いたい場合、フォーマットは必ずFAT32を指定
※今回、ドライブレターMが埋まっててエラー吐かれた。開いてるレターも予め調べといたほうがいいよ
○今日のコード
★Diskpart実行(管理者権限でコマンドプロンプトを起動してからやってね)
list disk
select disk 1 ←(上のリスト表示からUSBメモリを割り出してその番号をここに入れる)
clean
create partition primary
format fs=fat32 quick
active (これでアクティブ化する、要は起動可能になるよ)
assign letter=m (Mドライブとしてマウントするよ)
★コピる
MドライブにUSBメモリがマウントされるので
Windows10のインストールメディアの中身をそこにコピる
こんな簡単なことをネタにすんなって言われそう…
かしこ
禁断のWindows10 インストールメディアいじり その2
その2はインストールメディアを作成。
その1で作った、AutoUnattend.xmlと$OEM$フォルダを使うためにWindows10 インストールメディアを作ります。
使うのはWindowsADKに同梱されているOscdimg.exe。
これは、コマンドライン用のプログラムなのでDOSプロンプトから実行。
色々オプションを設定する必要があるので以下のようにバッチを作って実行。
基本的にはそのまま作成できるのだが、色々付け加えるとDVDの4.5GBを超えてしまうことが多々ある。
ところが、そのまま作ってしまうと起動出来ないISOが出来上がってしまう。(汗)
ので、bootOrder.txtというファイルを一緒に読み込む必要があるらしい。(別にOは小文字でもいいよ。どっかのサイトでそうだったからそうしてるだけ)
さらに、そのファイルを読みこませる場合、UDFバージョンを指定して上げる必要があるらしい。
詳しいことはググッたほうが吉。
という感じで作ると以下のバッチが出来上がる。
後は、バッチを実行。
しばらく待つとバッチと同じフォルダにISOFILE名のISOが出来上がるのでDVD-Rに焼けばよろしい。
自分の場合は4.5GBを超えるためDLメディアが必要なのだが、ないので仮想ドライブになる某社のUSBHDDを使用して起動。
DLメディアは品質でブートできないこともあるので自己責任で。
まあ、サイズがデカすぎる場合は素直にUSBメモリに入れたほうがめんどくなくていいよ。
ちなみに、4.5GBを超えない場合は、-udfver150 -yo%ORDER% を消せばいいだけ。
もちろんbootOrder.txtもいらない。
詳しくはTechnetとかを見たほうがいいよ。
oscdimg.exe を使用して 4.5 GB 超の ISO ファイルを作成する場合の注意点 - Ask CORE - Site Home - TechNet Blogs
○今日のコード
★バッチ(MakeDVD.batとか名前つけてな)
@SET OSFILE=C:\w10_data\media
@SET NAME=Windows10_Home_64
@SET ISOFILE=%~dp0WINDOWS10.ISO
@SET BOOTFILE=2#p0,e,b%OSFILE%\boot\etfsboot.com#pEF,e,b%OSFILE%\efi\microsoft\boot\efisys.bin
@SET UTIL="C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg\Oscdimg.exe"
@SET ORDER=%~dp0bootOrder.txt
%UTIL% -u2 -udfver150 -yo%ORDER% -m -o -h -bootdata:%BOOTFILE% -l%NAME% %OSFILE% %ISOFILE%
★C:\w10_data\mediaのフォルダ内(インストールメディアからまるごとコピー+*)
autorun.inf
boot
bootmgr
bootmgr.efi
CustomSetup.bat
efi
setup.exe
sources
support
* $OEM$
* AutoUnattend.xml
★bootOrder.txt(バッチと同じ場所に置いておく)
boot\bcd
boot\boot.sdi
boot\bootfix.bin
boot\bootsect.exe
boot\etfsboot.com
boot\memtest.exe
boot\fonts\chs_boot.ttf
boot\fonts\cht_boot.ttf
boot\fonts\jpn_boot.ttf
boot\fonts\kor_boot.ttf
boot\fonts\malgunn_boot.ttf
boot\fonts\malgun_boot.ttf
boot\fonts\meiryon_boot.ttf
boot\fonts\meiryo_boot.ttf
boot\fonts\msjhn_boot.ttf
boot\fonts\msjh_boot.ttf
boot\fonts\msyhn_boot.ttf
boot\fonts\msyh_boot.ttf
boot\fonts\segmono_boot.ttf
boot\fonts\segoen_slboot.ttf
boot\fonts\segoe_slboot.ttf
boot\fonts\wgl4_boot.ttf
boot\ja-jp\bootsect.exe.mui
boot\resources\bootres.dll
sources\boot.wim
おとなしくUSBメモリ使え!(身も蓋もねぇ)
かしこ
禁断のWindows10 インストールメディアいじり その1
今日はWindows10日和なのであれなことをしちゃったよ。
自動インストール的なあれ。
まず、説明がめんどくさいので結論というか成果物の貼り付けだ!!
これが何かというと、Windows System Image Manager(以下WSIM)というマイクロソフト様のツール(WindowsADKの中の一つ)を使って作った自動インストール用の応答ファイルっだ!
それで、これで何をしているかというと、以下の事をしているのっだ!
- プロダクトキーを初めから入力(空欄も可)
- エディション選択(HomeとかProとかね)
- 言語選択(日本語とかね、それしか使わんけどね)
- 壁紙設定
- ファイルのコピー
- その他設定
使い方は、主に下の3つ
- DVDに一緒に焼いてあげる(DVDのルートにあると自動で読み込む)
- ブートできるUSBメモリにDVDの中身全部と一緒に入れる(同じくルートに)
- USBメモリに入れて、通常のDVDインストールする際にPCに挿しとく(同じくルートに)
そして、説明のめんどくさい作り方ですが、割愛!!!
というわけにも行かないので、画像貼る!
そんで、説明
まず、1~7まであるのが、応答ファイルの「settings pass」
次に、amd64_Microsoft-Windows-International-Core-WinPE…てのが「Component name」
そんな感じに見ていき、あとはXMLの読み方どおり、<>~</>で一つの箱の設定になってるんだな。
さらにざっくりとだけど、だいたい設定しているところは下のような感じ。
1のプロダクトキーは「ProductKey」
2のエディション選択は「InstallFrom」
4の壁紙設定は「DesktopBackground」
5のファイルのコピーは「RunSynchronousCommand」
一つ一つの設定はWSIMにあるので、設定したい項目を検索して、応答ファイルに画像のところに追加して設定するといった使い方になる。
検索と言っても、検索する設定名がわからないのでそれはGoogle先生orTechnet先生に聞くしか無い。
それから、壁紙のファイルを置いておく場所が$OEM$というフォルダ。
それを応答ファイルと同じ場所に置く必要がある。
$OEM$\$$というフォルダがインストールが完了した後のC:\Windowsフォルダに相当。
つまり、$OEM$\$$\KABEGAMI → C:\Windows\KABEGAMI にコピーされるわけ。
なので、壁紙フォルダに壁紙の画像を入れて、4の設定をすればOKということ。
まあ、こんな書き方しても分かる人にしかわからんかもしれんが、どうしてもいろいろ設定したかったらTechnet当たりを検索していくしか無いかも。
不親切極まりないけど、こうとしか書けないからしょうがない
かしこ
>追記
一番最後の「Reseal」のモードがAudit(監査モード)になってるけど、通常はOOBEだよ。これは、Windowsが買った時の初期状態にするか(OOBEモード)、初期状態手前で色々設定を追加したい状態(Audit)を選ぶってところ。
Auditで、ドライバを追加してOOBEにしてやれば、初期状態からすぐに使えて便利!!状態にできるんだよ。
なので、お仕事上捗るからそうしてる。
でも、一般の方にはあまり必要ないからOOBEにしといたほうがいいかもだよ。
USBメモリを読み取り専用にしたい/したくないっ!
今日はやらかしてない日だよ。
珍しく。
だから、今回は備忘録的な記事なので面白みもないよ。(他の記事も面白くはないけど)
色んな理由があってUSBメモリを読み取り専用にしたい時がある。
今日がその日だった。
そこでこんなものを作成。
DiskReadOnly_ONOFF.bat(中は下のやつを参照)
これをUSBメモリに入れて、右クリック+管理者権限で実行!!
あとは読み取り専用にしたいか聞いてくるからyかnを入力!!
でも、nで解除した後ちょっと待たないと反映されないと気づくまで、若干またやらかしたかな~??と悩んだことは内緒だぜ!!
ざっくり説明すると、echo ... >> %SCR% のところでDiskpartに食わせるスクリプトを作成して、Diskpart実行、使い終わったら消す。
もちろん、ファイルが増えてもいいって奴は、ここを別のスクリプトファイルとして保存してもいいよ。
その前後は、OnにするかOffにするか聞いたり、timeoutは実行結果は見たいけどストップはさせたくないという怠け者が考えたちょっとだけ待つもの。
今日のコード
USBメモリに以下をコピったBATファイルを作って実行
@echo Disk ReadOnly (On=y ,Off=n)
@set /p st=" > "
@if %st%.==y. GOTO RO
@if %st%.==n. GOTO RW
@GOTO END
:RO
@set SCR=%TEMP%\DPSCR.TXT
@echo sel vol %~d0 > %SCR%
@echo attribute disk set readonly >> %SCR%
@diskpart /s %SCR%
@DEL /q %SCR%
@GOTO END
:RW
@set SCR=%TEMP%\DPSCR.TXT
@echo sel vol %~d0 > %SCR%
@echo attribute disk clear readonly >> %SCR%
@diskpart /s %SCR%
@DEL /q %SCR%
@GOTO END
:END
@timeout /t 3 >nul
必要に迫られて色々作る日もある
かしこ
「パッケージングバックエンドの初期化に失敗しました」の修復+α
なんか毎日やらかしとる…
VirtualBoxでCentOS6.6を使用しているのだが、yumでアップ中にゲストがフリーズしてしまい、VirtualBoxを強制終了せざるを得なくなった。
その後再アップをしようとすると、「パッケージングバックエンドの初期化に失敗しました」と言われてしもた。
さらにさらに、再起動するといいことあるかな~と何も考えずにやってしまったら、更にKernelpanicで起動すらしなくなるというドツボに!!
取り敢えず、Kernel panicを先にどうにかせねばといろいろ試すもダメ。
諦めようかと思ったが、こんなこと今後もありそうなので今のうちになんとかせねばと久しぶりにやる気を出してKernel panicの直前のメッセージを良く見てみることに。
なにやら、LVMが読めねぇ的なこと言っとる。
ならばと、レスキューディスクで起動し、yumでlvm関連とkernelを再インストールしてみた。
そしたらば、やった起動出来た!!!
すげぇっ、俺!、すげぇっCentOS!、レスキュー状態でもyum出来んのかよ!!?
あとは、ググッてエラーメッセージの対処法を探したので最後のひと押しで「パッケージング~~」を修復。(以下を参考にしたよ)
CentOS6.4のソフトウェア更新でエラー - Linux系OS | 【OKWave】
今日の命綱
○LVM周りの起動不良リカバリー
レスキューディスク起動+ネットに接続
#chroot /mnt/sysimage
#yum reinstall kernel
#yum reinstall lvm*
○「パッケージングバックエンドの初期化に失敗しました」修復
#yum-complete-transaction
ポンコツでもたまに感が冴える時がある
かしこ