Windows」カテゴリーアーカイブ

WSLインストール時のエラー(0x80370102)

WSLをインストール(wsl –install)後に再起動するとコマンドプロンプトが自動で起動しインストールが始まるものの、下記のエラーが発生した。調べてみると、Intel CPUで言うところのVirtualization TechnologyがOFFになっていたことが原因だった。AMD CPUでは「AMD Virtualization (AMD-V™)」と呼ぶらしく、ASUSマザーボードのUEFI BIOSでの設定項目は「SVM MODE」ということだった。

WslRegisterDistribution failed with error: 0x80370102

Windowsコマンドプロンプト

最近のPCでは、再起動後にASUSのロゴが表示されない(早すぎてFxキーでUEFI BIOS画面に入れない?)ようで、Shiftキーを押しながら、Windowsの左下スタートメニューの再起動を実行することでUEFI BIOS画面に入ることが出来る。

更に、HDMIとDPを両方使用して2画面構成にしている場合、DP側のみにUEFI BIOS画面が表示されるので注意。私の場合、DP側をサブディスプレイに出力させ、普段はディスプレイをOFFにしていたので数分ハマった。

UEFI BIOS画面に入ったら、右下のAdvanced Mode > Advanced > CPU Configuration > SVM Mode > Enable > 右下EzMode > Save & Exitで再起動すればOK。

再起動後は、左下スタートメニュー > 最近追加されたもの > Ubuntuを選択することでインストールを再開できる。新規作成するユーザ名を聞かれパスワードも合わせて設定することで設定完了する。

Windowsのファイル共有で認証エラーとなる

Windows標準のファイル共有をする過程でハマったのでメモ。

事象

正しいユーザ名・パスワードを入力しているはずなのに「ユーザー名またはパスワードが正しくありません」と認証エラーが出てしまう。

原因・回避策

WindowsのOSユーザ名を途中で変更していた場合、初期(変更前)のユーザ名を入力すると認証に成功する。何故か、認証時に初期のユーザ名が参照されるバグめいた挙動をする。初期のユーザ名は「C:\Users\」配下のフォルダ名が該当する。ユーザ名を変更しても、ユーザ情報を管理するフォルダ名は変更されない仕様を活用する。

別バージョンのWindowsインストールイメージファイルを取得する

Windowsのイメージファイル(isoファイル)を、Microsoft謹製の「メディア作成ツール(mediacreationtool.exe)」を使用せずに、直接取得する方法がありました。これを利用すると、例えばOSをインストールしたい端末がオフラインであり、インターネットに接続している端末とWindowsのバージョンが異なる場合に便利です。

普通にWindows端末から下記ページにアクセスした場合は、メディア作成ツールのダウンロードしか行うことが出来ませんが、Windows以外(例えばAndroid)で同じページにアクセスすると、有効期限付きのisoファイルへの直リンクを取得できます。

https://www.microsoft.com/ja-jp/software-download/windows8

下記のような時間制限付きのリンクが生成されます。

https://software-download.microsoft.com/db/Win8.1_Japanese_x64.iso?t=xxx&e=yyy&h=zzz

なお、メディア作成ツールは実行された環境によってOSを判別しているようなので、例えば、唯一インターネットに出られる環境が、社内制約によりWindowsServer系だけなので「このプラットフォームはサポートされていません。」というエラーメッセージが出てしまう場合にも上記方法で回避できます。

foobar2000のColumnsUIで再生中/再生順を1列で表示する

foobar2000のカスタマイズに凝っていた時に作った、ColumnsUIのPlaylistViewで再生中/再生順を1列で表示する簡易なスクリプトのメモです。

こんな感じで表示できます。

再生中と再生順を表示してみた画面

再生中と再生順を表示してみた画面

こんな感じで実現できます。

$if(%isplaying%, ♪, [%queue_indexes%])

スクリプト

スクリプト

ちなみに蛇足ですが、私は再生キューに出し入れする機能をキーボードに割り当ててます。便利です。

キーボードショートカット設定例

キーボードショートカット設定例

foobar2000でインターネットから取得した歌詞を表示する

foobar2000でインターネットから取得した歌詞を表示してみたのでメモしておきます。

全体像

スマートに実現する方法はありません。下記のように様々なcomponents及び、外部プログラムを協調させます。また、全自動ではできませんでした。

foobar2000で歌詞を表示するための設定全体像

foobar2000で歌詞を表示するための設定全体像

処理の流れ

理解する必要はありませんが、おさえておいたほうが良いでしょう。

  1. RunServicesが再生中の曲名+歌手を引数にLyricMasterを呼出します。
  2. LyricsMasterが曲名+歌手をキーに複数の歌詞掲載サイトを検索して、HTMLをパース、歌詞を抽出、候補リストを出力します。
  3. 人間が候補リストから最も正しい歌詞を選択すると、LyricsMasterが歌詞を曲名+歌手をファイル名に設定してファイル出力します。
  4. LyricsPanel(要:ColumnsUI)が再生中の曲名+歌手を元に歌詞ファイルを特定して画面表示します。

必要資材

下記に必要な資材をまとめましたので適宜取得してください。

資材名 取得先
RunServices http://www.foobar2000.org/components/view/foo_run
CulumnsUI http://yuo.be/columns.php
LyricsPanel http://foo2k.chottu.net/
LyricsMaster http://www.kenichimaehashi.com/lyricsmaster/

手順

手順自体はfoobar + Lyrics Master – 別称 うしぶの通りやれば出来ました。

トラブルシューティング

詰まった箇所をメモしておきます。

  • LyricsPanelの上で右クリック→Reload Lyrics File
  • foobar2000上の曲名+歌手と、歌詞ファイル名と一致させる。(例えば、(カバー)(CV.〜)が付いているだけでもダメ。姓名の間に空白があってもダメ。)
  • 初期設定では文字化けするので、LyricsPanelの設定をUTF-8にする。
  • おまけ:AMIPで同じことをやろうとしましたが、iTunesでエンコードしたMP3に付属するID3タグはUnicodeになっていて、かつ、AMIPはUnicode非対応らしいので必ず文字化けを起こしてしまい諦めました。(参考:Winampやfoobar2000とLyrics Masterを連携させる方法

VPCZ1で故障したSSDを切り離してRAIDを構成する

VPCZ12AGJ(SONY VAIO typeZ)の故障した4台目のSSDのみ切り離ししてRAIDを構成、リカバリ処理してみましたのでメモを残しておきます。

必要なもの

RAIDを再構成するため内部ストレージのリカバリ領域が消去されてしまいます。そのため、事前にリカバリディスクを作成しておく必要があります。

手順

SSDが故障している場合は、電源投入時に下記のようなエラー画面が表示されます。ここで、4台目(Serial:S0F3NE5Z605713)でエラー発生(Error Occure)していることを確認できます。つまり、4台目を除いてRAID0を再構成します。まずは、「2.Delete RAID Volume」を選択して現在のVolume0を削除します。

SSDエラー表示画面

SSDエラー表示画面

実際に削除を試みた画面を下記に示します。当然、すべてのデータが消去されます。Volume0を削除した後、「1.Create RAID Volume」から障害が発生していたSSD以外の3台で178.9GB(59.6GB*3台)のRAID0を再構成します。

RAID削除画面

RAID削除画面

実際に再構成してみた画面を下記に示します。その後、リカバリディスクをセットしてから「5.Exit」を選択します。再起動しますので、VAIOの起動画面から「F11」を連打することで「Windowsブートマネージャ」を立ち上げます。その後、「VAIO Careレスキュー」からリカバリ画面に進みます。

RAID再構成後の状態

RAID再構成後の状態

実際にリカバリ画面まで進んでみた画像を下記に示します。

リカバリ時の画面

リカバリ時の画面

その後は、通常通りリカバリを進めていくだけです。インテルラピッド・ストレージ・テクノロジー画面を見ると、問題なく3台のSSDでRAIDが構成できていると確認できます。

RAID構成確認

RAID構成確認

WindowDefenderのCustomScanはフルパスでファイルを渡す

Windows8のWindowsDefenderは、Windows7以前のWindowsDefenderとMicrosoftSecurityEssentialsが統合されたもので、シンプルなアンチウイルスソフトとしてプリインストールされています。今回、いろいろと実験してみたので結果を書き記しておきます。

ファイルを指定してスキャンする

MSEでは出来ていた「特定ファイルを指定してスキャン」の機能が、WindowsDefenderではGUIから呼び出せなくなっています。ただし、実体の実行ファイル(”C:\Program Files\Windows Defender\MpCmdRun.exe”)にオプションを与えてやることで実現可能です。

"C:\Program Files\Windows Defender\MpCmdRun.exe" -Scan -ScanType 3 -File "C:\Users\Username\Desktop\a.txt"

実行結果は下記のとおりです。

Scan starting...
Scan finished.
Scanning C:\Users\Username\Desktop\a.txt found no threats.

ここでの注意は、「Program Files」というイケていない空白入りのフォルダ名が原因で実行ファイルすらダブルクォーテーションで囲む必要がある点と、スキャン対象をフルパスで渡す必要がある点です。フルパスで渡さなかった場合は下記のようなエラーが発生します。

CmdTool: Failed with hr = 0x80070002.
Check C:\Users\Username\AppData\Local\Temp\MpCmdRun.log for more information

「詳しくはログを見ろ」としか言ってくれないのでログを見てみると、下記のようなログが出力されています。……よくわからないですね。私はここで躓きました。ググっても英語ばかりで要領を得ません。

MpCmdRun: Command Line: "C:\Program Files\Windows Defender\MpCmdRun.exe"  -Scan -ScanType 3 -File "a.txt"
 Start Time: ‎木 ‎12 ‎25 ‎2014 01:09:44

Starting RunCommandScan.
INFO: ScheduleJob is not set. Skipping signature update.
Invalid path to scan: a.txt. hr = 80070002
MpCmdRun: End Time: ‎木 ‎12 ‎25 ‎2014 01:09:44

ちなみに、引数等は-hオプションで確認できます。実行結果を載せておきます。※ただし英語

Microsoft Antimalware Service Command Line Utility (c) 2006-2014 Microsoft Corp
Use this tool to automate and troubleshoot Microsoft Antimalware Service

Usage:
MpCmdRun.exe [command] [-options]

Command Description
   -? / -h                                    Displays all available options
                                              for this tool
   -Scan [-ScanType #] [-File <path> [-DisableRemediation] [-BootSectorScan]]
         [-Timeout <days>]
                                              Scans for malicious software
   -Trace [-Grouping #] [-Level #]            Starts diagnostic tracing
   -GetFiles                                  Collects support information
   -RemoveDefinitions [-All]                  Restores the installed
                                              signature definitions
                                              to a previous backup copy or to
                                              the original default set of
                                              signatures
                      [-DynamicSignatures]    Removes only the dynamically
                                              downloaded signatures
   -SignatureUpdate [-UNC | -MMPC]            Checks for new definition updates
   -Restore  [-ListAll | [-Name <name>] [-All] [-Path <path>]]  Restore or list
                                                               quarantined item(s)
   -AddDynamicSignature [-Path]               Loads a dynamic signature
   -ListAllDynamicSignatures                  List the loaded dynamic signatures
   -RemoveDynamicSignature [-SignatureSetID]  Removes a dynamic signature
   -EnableIntegrityServices                   Enables integrity services
   -SubmitSamples                             Submit all sample requests

Additional Information:

Support information will be in the following directory:
C:\ProgramData\Microsoft\Windows Defender\Support

   -Scan [-ScanType value]
        0  Default, according to your configuration
        1  Quick scan
        2  Full system scan
        3  File and directory custom scan

           [-File <path>]
                Indicates the file or directory  to be scanned, only valid for custom scan.

           [-DisableRemediation]
                This option is valid only for custom scan.
                When specified:
                  - File exclusions are ignored.
                  - Archive files are scanned.
                  - Actions are not applied after detection.
                  - Event log entries are not written after detection.
                  - Detections from the custom scan are not displayed in the user interface.

           [-BootSectorScan]
                Enables boot sector scanning; only valid for custom scan.

           [-Timeout <days>]
                Timeout in days; maximum value is 30.
                If this parameter is not specified, default value is 7 days for full scan and 1 day for all other scans.

      Return code is
      0    if no malware is found or malware is successfully remediated and no additional user action is required
      2    if malware is found and not remediated or additional user action is required to complete remediation or there is error in scanning.  Please
 check History for more information.

   -Trace [-Grouping value] [-Level value]
        Begins tracing Microsoft Antimalware Service's actions.
        You can specify the components for which tracing is enabled and
        how much information is recorded.
        If no component is specified, all the components will be logged.
        If no level is specified, the Error, Warning and Informational levels
        will be logged. The data will be stored in the support directory
        as a file having the current timestamp in its name and bearing
        the extension BIN.

        [-Grouping]
        0x1    Service
        0x2    Malware Protection Engine
        0x4    User Interface
        0x8    Real-Time Protection
        0x10   Scheduled actions
        0x20   NIS/GAPA

        [-Level]
        0x1    Errors
        0x2    Warnings
        0x4    Informational messages
        0x8    Function calls
        0x10   Verbose
        0x20   Performance

   -GetFiles [-Scan]
        Gathers the following log files and packages them together in a
        compressed file in the support directory

        - Any trace files from Microsoft Antimalware Service
        - The Windows Update history log
        - All Microsoft Antimalware Service events from the System event log
        - All relevant Microsoft Antimalware Service registry locations
        - The log file of this tool
        - The log file of the signature update helper tool

        [-Scan]
        Scans for unusual files.  The files and results of the scan
        will be packaged in the compressed file.

   -RemoveDefinitions
        Restores the last set of signature definitions

        [-All]
        Removes any installed signature and engine files. Use this
        option if you have difficulties trying to update signatures.

        [-DynamicSignatures]
        Removes all Dynamic Signatures.

   -SignatureUpdate
        Checks for new definition updates

        [-UNC [-Path <path>]]
        Performs update directly from UNC file share specified in <path>
        If -Path is not specified, update will be performed directly from the
             preconfigured UNC location

        [-MMPC]
        Performs update directly from Microsoft Malware Protection Center

   -Restore
        [-ListAll]
        List all items that were quarantined

        [-Name <name>]
        Restores the most recently quarantined item based on threat name
        One Threat can map to more than one file

        [-All]
        Restores all the quarantined items based on name

        [-Path]
        Specify the path where the quarantined items will be restored.
        If not specified, the item will be restored to the original path.
   -AddDynamicSignature -Path <path>
        Adds a Dynamic Signature specified by <path>

   -ListAllDynamicSignatures
        Lists SignatureSet ID's of all Dynamic Signatures added to the client
        via MAPS and MPCMDRUN -AddDynamicSignature

   -RemoveDynamicSignature -SignatureSetID <SignatureSetID>
        Removes a Dynamic Signature specified by <SignatureSetID>

右クリックメニューに「WindowsDefenderでスキャン」を追加

さすがに毎回コマンドプロンプトから実行するのは面倒なので、右クリックメニューに追加(シェル拡張)してしまいます。レジストリを弄る必要がありますが、regファイルを用意したのでお使いください。(WordPressのポリシーでregファイルをアップロードできないので、拡張子を.regに変更してからご使用ください。)

WindowsDefender_AddRightClickMenu.reg

中身を見ていただくと分かる通り、難しいことはしていません。ただし、自己責任でお願いします。

[HKEY_CLASSES_ROOT\*\shell\WindowsDefender]
"MUIVerb"="Windows Defenderでスキャン"

[HKEY_CLASSES_ROOT\*\shell\WindowsDefender\Command]
@="\"C:\\Program Files\\Windows Defender\\MpCmdRun.exe\" -Scan -ScanType 3 -File %1"

ちなみに、右クリックから起動してから先ほどのログを見てみると、正常にスキャン完了していることを確認できます。

MpCmdRun: Command Line: "C:\Program Files\Windows Defender\MpCmdRun.exe" -Scan -ScanType 3 -File C:\Users\Username\Desktop\a.txt
 Start Time: ‎木 ‎12 ‎25 ‎2014 01:30:53

Starting RunCommandScan.
INFO: ScheduleJob is not set. Skipping signature update.
Scanning path as file: C:\Users\Username\Desktop\a.txt.
Start: MpScan(MP_FEATURE_SUPPORTED, dwOptions=16385, path C:\Users\Username\Desktop\a.txt, DisableRemediation = 0, BootSectorScan = 0, Timeout in days = 1)
MpScan() started
MpScan() was completed
Finish: MpScanStart(MP_FEATURE_SUPPORTED, dwOptions=16385)
Finish: MpScan(MP_FEATURE_SUPPORTED, dwOptions=16385, path C:\Users\Username\Desktop\a.txt, DisableRemediation = 0, BootSectorScan = 0, Timeout in days = 1)
Scanning C:\Users\Username\Desktop\a.txt found no threats.
MpScan() has detected 0 threats.
MpCmdRun: End Time: ‎木 ‎12 ‎25 ‎2014 01:30:53

参考資料

CentOSでTortoiseSVNを動作させる

VMWareのCentOS(ゲストOS)にWINEをインストールして、TortoiseSVNを動作させてみました。完全に誰得情報です。

環境情報

見ての通り64bitです。

cat /etc/redhat-release 
CentOS release 6.6 (Final)
uname -a
Linux localhost.localdomain 2.6.32-504.3.3.el6.x86_64 #1 SMP Wed Dec 17 01:55:02 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

WINEのインストール

WINEは標準リポジトリに存在しないので、epelリポジトリを追加する必要があります。ちなみに、WindowsのVMWare環境でネットワーク設定を「NAT」にしている場合はゲストOSのインターネット側との通信が異常に遅くなる事象が発生するので、今回だけは「ブリッジ」にすることをおすすめします。

su -
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum repolist

http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/repoview/epel-release.html

後はyumにおまかせです。

yum install wine

WINEの初期設定をします。ひたすらYESを押せばインストール完了します。この時点から既にWindowsっぽいウィンドウが出てきます。

winecfg

Screenshot-Wine configuration

Screenshot-Wine configuration

TortoiseSVNのインストール

Windowsと同じようにmsiファイルを取得して、msiexecオプションを付けたwineから呼び出します。日本語パックもついでにインストールしときます。

wget http://downloads.sourceforge.net/project/tortoisesvn/1.8.10/Application/TortoiseSVN-1.8.10.26129-x64-svn-1.8.11.msi
wget http://downloads.sourceforge.net/project/tortoisesvn/1.8.10/Language%20Packs/LanguagePack_1.8.10.26129-x64-ja.msi
wine msiexec /i TortoiseSVN-1.8.10.26129-x64-svn-1.8.11.msi
wine msiexec /i LanguagePack_1.8.10.26129-x64-ja.msi

成功すると、こんな妙なところにインストールされています。

/home/username/.wine/drive_c/Program Files (x86)/TortoiseSVN/bin

ちなみに、CentOSのメニューからは起動できません。(配置されているのは.lnkファイルだからうまく実行できないみたいです。)

tortoisesvn起動

tortoisesvn起動

TortoiseSVNを使ってみる

fixme等の怪しいメッセージがたくさん出ますが問題なく起動できます。TortoiseSVNはTortoiseProc.exeにコマンドを与える形で各種機能を呼び出すデザインになっているようです。そのため、インストールで.lnkファイルが作成されたんだと思います。詳細なオプションは本家マニュアルが詳しいです。

めんどうですが、binフォルダに移動して、wineから呼び出します。

cd "/home/username/.wine/drive_c/Program Files (x86)/TortoiseSVN/bin"
wine TortoiseProc.exe /command:about
wine TortoiseProc.exe /command:settings

mfc110u.dllが見つからない的なエラーが出た時は、ホストOSのWindowsの「C:\Windows\System32」から当該ファイルをコピーして、ゲストOSのCentOSの「/home/username/.wine/drive_c/windows/system32」にペーストしてください。

全機能を動かしてはいませんが、とりあえず動いてるように見えました。WINEすごいですね。

参考にさせてもらった資料

秘密鍵/公開鍵を使ってパスワード無しのssh接続をする(cygwin@Windows→xrea)

公開鍵/秘密鍵を使ったパスワード無しのssh接続を、Windowsのcygwinからxreaサーバに実施する際のメモです。

まずは公開鍵/秘密鍵を作成する。cygwinはデフォルトで~/.sshフォルダが存在するため作成不要。ssh-keygenはオプションなしだとrsaを使用する。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/User/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/User/.ssh/id_rsa.
Your public key has been saved in /home/User/.ssh/id_rsa.pub.
The key fingerprint is:

$ cd .ssh/

$ ls -la
合計 13
drwxrwx---+ 1 User なし    0 11月 29 15:10 .
drwxrwxr-x+ 1 User なし    0 9月  29 23:51 ..
-rw-rw----  1 User なし 1679 11月 29 15:10 id_rsa
-rw-rw-r--  1 User なし  394 11月 29 15:10 id_rsa.pub
-rw-rw-r--  1 User なし  745 11月 29 14:03 known_hosts

xreaに公開鍵をscpでファイル転送する。

$ scp ./id_rsa.pub jikkenjo@s353.xrea.com:.

xrea側でauthorized_keysに追加する。xreaにssh接続するためには、Webのコントロールパネルから「ホスト情報登録」をしておく必要があります。

$ ssh -l jikkenjo s353.xrea.com

> mkdir .ssh
> chmod 700 .ssh
> mv id_rsa.pub ./.ssh/.
> cd .ssh/
> cat ./id_rsa.pub >> authorized_keys
> chmod 600 authorized_keys
> logout

早速、sshで接続してみる。が、「秘密鍵のパーミッションが緩すぎる」と怒られてエラーとなる。

$ ssh -l jikkenjo s353.xrea.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/home/User/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/User/.ssh/id_rsa
jikkenjo@s353.xrea.com's password:

そもそも、id_rsaに所有グループが設定されていなかったので設定して、グループからのアクセスを拒否するパーミッションに設定する。(念のため、ユーザの所属するグループを確認して設定。)

$ groups
なし Users HomeUsers

$ chgrp Users ./id_rsa
$ chmod 400 ./id_rsa

これにて一件落着。

$ ssh -l jikkenjo s353.xrea.com
> 

ファイル名の先頭が半角空白のファイルをFTPサーバにアップロードすると詰む

先頭に半角空白があるファイルをFTPサーバにアップロードすると、各種クライアント(FFFTPで検証)が対応していないのか、ダウンロードは元より、削除や移動もできなくなり詰みます。

ちなみに、Explorerのアドレスバーにftp://〜と入力することで簡易なFTPクライアントとしても使えますが、そちらでもエラーが発生します。

エラーメッセージ例

550 The system cannot find the file specified.

FTPサーバのファイルまたはフォルダーを削除しようとしてエラーが発生しました。このフォルダーへのアクセス許可があるかどうかを確認してください。

対応方法

コマンドプロンプトでftpコマンドを使って接続し、ファイル名をダブルクォーテーションで囲って指定することで削除(delete)や移動ができます。

$ ftp xxx.xxx.xxx.xxx
> delete " filename.msg"

Explorerからは先頭空白のファイル名を付与できませんが、WindowsAPI経由では可能のようです。今回の私の場合は、Microsoft Office Outlookのメールをファイルとして保存すると、ファイル名の先頭に半角空白が紛れ込みました。