2011/12/05

Visual C# 2010 Express Edition で「要求されたレジストリアクセスは許可されていません。」が出る



VC# 2010 Express Edition で新しいプロジェクトを作ろうとすると「要求されたレジストリアクセスは許可されていません。」が出る*1


ぐぐったら、やれ Windows Resource Kit を入れるだの、レジストリをいじるだの出てきたけど、効果なし。


仕方ないので、VC# 2008 Express Edition を入れてみると、こちらではOK。


念のため、もう一度 2010 でやってみると、なぜかうまくいった。2008 がなんかしてくれたようだ。


ま、2008 を使うつもりはないけど、入れたままでいいや。




*1:事例も少なそうだし、ひょっとして AVR Studio 5 の影響だろうか。





2011/12/03

MPC で iso を直接再生する wsh スクリプトを書いてみた



動画を見るときは Media Player Classic(MPC) を使ってる。でも MPC は ISOは直接再生できないので、ISO を見るときだけは仕方なく VLC を使っていたのだった。

でも VLC ってちょっと使いにくい。なので、MPC で iso を再生する wsh スクリプトを書いてみた*1


' play dvd iso
'
' 1. mount iso (using WinCDEmu)
' 2. launch mpc and play
' 3. unmount iso
'
MOUNTER="""C:\Program Files (x86)\WinCDEmu\batchmnt64.exe"""
DVD_DRV="v:"
PLAYER="C:\Users\g\Dropbox\apps\MPC-HomeCinema.1.5.2.3456.x64\mpc-hc64.exe"
'-----------------
' functions
'-----------------
Function is_mounted_any_iso_already(drv)
ret = False
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(drv & "\\") Then ret = True
is_mounted_any_iso_already = ret
End Function
Sub mount(sh, iso)
sh.Run MOUNTER & " " & iso & " " & DVD_DRV,0, True
End Sub
Sub umount(sh)
sh.Run MOUNTER & " /unmount " & DVD_DRV,0,True
End Sub
Sub wait_for_activation(sh, app)
Do Until sh.AppActivate(app.ProcessID)
WScript.Sleep 500
Loop
End Sub
Sub wait_for_termination
Do
set proc=getobject("winmgmts:root\cimv2").execquery("select * from win32_process where name='wfica32.exe'")
wscript.sleep 500
Loop While proc.count = 1
End Sub
'-----------------
' main procedure
'-----------------
If WScript.Arguments.Count <> 1 Then WScript.Quit
If is_mounted_any_iso_already(DVD_DRV) Then WScript.Quit
Set ws = WScript.CreateObject("WScript.Shell")
mount ws, WScript.Arguments(0)
ws.Run PLAYER & " " & DVD_DRV & " /dvd /play",,True
wait_for_termination
umount ws


やってることは単純で WinCDEmu で DVD の ISO をマウントして MPC で再生するだけ。MPCを閉じたらアンマウント。


これを使って、ISO ファイルをダブルクリックして再生するための手順を書いておく。


なお、.vbs をファイルの関連付けすることはできないと思うので、MakeExe で .vbs → .exe に変換したものを .iso に関連付けするようにした。




  1. mpcをダウンロードしてインストール

  2. WinCDEmuをダウンロードしてインストール

  3. MakeExe をダウンロードして展開

  4. 上述の dvd_iso_play.vbs をどこかに保存

  5. dvd_iso_play.vbs の MOUNTER と PLAYER を書き換える

  6. MakeExe を展開したディレクトリに makewin.exe があるので、そこに dvd_iso_play.vbs をドラッグアンドドロップ

  7. dvd_iso_play.vbs と同じ場所に exe ができるので、これを iso ファイルに関連付ける
    Windows 7では スタート / 規定のプログラム / ファイルの種類またはプロトコルのプログラムへの関連付け


これで、.iso をダブルクリックすると mpc で再生できるはず。


にしても MakeExe 素晴らしい。作者に感謝。




*1:ハゲしく既出な気もするんだけど