<   2014年 01月 ( 20 )   > この月の画像一覧
WindowsServer2008R2でユーザープロファイルのコピーが出来ない
WindowsServer2008R2でリモートデスクトップサービス(RDS)を構築して、あるユーザで環境を作成し、そのプロファイルを他のユーザでもコピーしようとしたんですが、[コピー先]ボタンがグレーアウトして押下できません。

調べると、Windows7やWindowsServer2008R2移行ではユーザプロファイルをコピーさせないMSお得意の"仕様"となったようです。

サポート情報では、Windows 転送ツール が使えるように書いてましたが、WindowsServer2008R2では使えませんでした。

MS的に真っ当なやり方は、Sysprep というツールで、カスタマイズしたプロファイルを既定のユーザプロファイルとして、それからユーザを作成する方法だそうです。

試してみたかったんですが、対象のユーザは数名で時間がなかったので、手動でユーザ環境を設定しました。

とりあえず参考になりそうなリンクだけ上げておきます。

おえかきWindows: Windows7のプロファイルコピー
MSサポート:Windows Vista、Windows Server 2008、Windows XP、または Windows Server 2003 のイメージを準備する際に、デフォルトのローカル ユーザー プロファイルをカスタマイズする方法
Windows 7 における、既定のユーザー プロファイルのカスタマイズについて
ユーザープロファイルとフォルダリダイレクト・その4 - Tech Notes
Windows 7 既定のユーザープロファイルカスタマイズ方法|インフラしむらのイベントログ
MSサポート:Windows 7 および Windows Server 2008 R2 の ユーザー プロファイルの設定画面から [既定のプロファイル] 以外のユーザー プロファイルをコピーできない


規模が大きい環境だとユーザプロファイルのコピーの要件は結構あるんで、なんとかして欲しいもんですね。
[PR]
by jehoshaphat | 2014-01-31 23:59 | 豆知識 | Trackback | Comments(0)
(OpenOffice)Writerで原稿用紙レイアウトを使う方法
Writerで原稿用紙レイアウトで印刷したいというユーザがいたんで調べてみたら、Going My Way: OpenOffice.org 用 縦書き原稿用紙の作成方法にドンピシャな答えが載ってました。

以下のページ設定でできるようです。

メニューバー

書式

・ページ タブ
  配置:横
  文字の方向:右から左へ(縦書き)
・行数と文字数 タブ
  行数と文字数を指定する にチェック
  ページ単位の行数:20
  行単位の文字数:20
  罫線を表示する:チェック
  罫線を印刷する:チェック
  罫線の色:任意

[PR]
by jehoshaphat | 2014-01-31 00:01 | OpenOffice | Trackback | Comments(0)
プロキシ自動構成スクリプトを使ってみた(特定ドメインのみプロキシ利用しない)

IEを始め、多くのブラウザはプロキシを自動設定するスクリプトに対応してます。

(ActiveDirectoryのグループポリシーを使えば、IEのプロキシは一元設定できますが、ADがない環境やIE以外のブラウザでプロキシを一元設定したいときにはこのスクリプトが有効かと思われます)

このスクリプトはJavaScriptとなっているようで、FindProxyForURL 関数を実装することで動きを指定できるようです。


今回は特定のドメインアクセス時のみプロキシを使わない設定にするというものだったので、以下のように書きました。


function FindProxyForURL(url, host)
{
//条件にある文字列を含むURLアクセス時はプロキシ使わずダイレクトにアクセスする
if ( url.indexOf("hogedomain.com") >= 0 ||
url.indexOf("piyodomain.org") >= 0 ||
url.indexOf("192.168.") >= 0
)
{
return "DIRECT";
}
else {
//プロキシサーバのアドレスを指定
return "PROXY 192.168.0.2:8080";
}
}


このファイルを社内のWEBサーバや共有フォルダに配置します。(ローカル上でもOKです)
次に、IEの[インターネットオプション]→[接続]タブ→[LANの設定]で、[自動構成スクリプトを使用する]にチェックを入れ、アドレス欄に上記のファイルを保存したアドレスを入力します。
WEBサーバ上に配置した場合は、http://hoge/proxy.pac というようにURLで指定します。
Windows共有フォルダ上やローカルに置いた場合は file://c:\proxy.pac というように file プロトコルで記述します。


ただ、return "DIRECT" で指定したところにアクセスするとIEのダメな仕様ですべてイントラネットゾーンになってしまいます。
これを防ぐには、インターネットオプションの[セキュリティ]タブ→[ローカルイントラネット]→[サイト]で、[プロキシサーバを使用しないサイトをすべて含める]のチェックをオフにします。
このあたりの話は、@IT:検証 IEの自動Proxy設定とセキュリティ・ゾーンで解説されています。

参考:
@IT:WebブラウザのProxy設定を行うための4つの方法 - WPADのススメ -
プロキシの自動設定方法
自動設定ファイル(proxy.pac)の作成
TechNet:付録 B : 自動プロキシ構成スクリプトの例
Proxyサーバー続編
[PR]
by jehoshaphat | 2014-01-30 23:57 | ネットワーク | Trackback | Comments(0)
IEでYoutubeで迷惑ソフトの広告を防ぐ
知人からの相談で最近youtubeをみるとかなりの頻度で、「PCに生じた問題をすぐ解決してください。今すぐ修復」というメッセージが表示されるのでなんとかしてほしいとのことでした。
実際リモートで確認すると以下のように表示されてました。
e0091163_1322591.jpg


この広告をクリックすると以下のようなサイトが表示されました。
e0091163_132291.jpg


WinZip System Utilities Suite といういかにも怪しげなページが表示されます。
調べてみるとあの圧縮解凍ソフトで有名なところが販売しているようですが、インドの Systweak Software が提供してる Advanced System Optimizer のOEMだそうです。
インストールするとエラーが相当数見つかったのでお金払って買ってねという迷惑ソフトのようです。
圧縮解凍で老舗なところが、迷惑ソフトまで出すようになったのは残念なことです。(そうでもしないと収益があげられない、つまりソフト自体だけでは経営できないという昨今のパッケージソフトメーカーが抱える問題だとは思うんですが、、、、)

知人はIEを使っており、広告を消したいということだったので、急ぎ「Adblock Plus for Internet Explorer」をここを参考にして入れました。

その後いろいろ調べてると、Right Media社のクッキーが入ってるとWinZip System Utilities Suiteの広告がよく出てくるようです。

なのでCookieをブロックするといいようです。
(インターネットオプション→プライバシータブ→詳細設定→サードパーティのCookieをブロックする)
更に、IEの追跡防止機能を有効にするといいようです。
(IEの追跡防止機能は良く知らなかったんですが、有効にするとリストに記載されたすべてのサイトのサード パーティコンテンツ(Cookieも)をブロックするようです)

追跡防止を有効にするには、IE(11の場合)のツール→アドオンの管理→追跡防止→追跡防止リストをオンラインで取得→Internet Explorer ギャラリーが開くのでリストを追加します。
Google関係の広告を止めるリストを追加すればOKのようです。


参考:
グーグルAdSense広告を消したい「Ads by Google」「AdChoices」ブロック - WinZipシステムユーティリティスイートに注意!
YouTubeに迷惑広告が出るんですが、yontooかなと思ってみてみてもどこにもありませ... - Yahoo!知恵袋
Internet Explorer で追跡防止を使用する - Microsoft Windows ヘルプ
Internet Explorer の追跡防止
YouTubeの広告を消す色々な方法まとめ!
[PR]
by jehoshaphat | 2014-01-30 13:24 | Webがらみ | Trackback | Comments(0)
icacls.exe を使ってACL(NTFSアクセス権)を設定する
以前に、cacls.exe を使ってACL(NTFSアクセス権)を設定すると、xcacls.vbsを使って詳細なACL(NTFSアクセス権)を変更するでACLを設定する方法を書きました。

今回は、WindowsServer2003 SP2 から使えるようになった。icacls での設定方法です。
現在では、caclsよりも、icaclsを使うことが推奨されているようです。
(XPでicaclsを動かすには、xcaclsが使えないため、icaclsをXPで動かすようにしたを参照)


使い方は、icacls コマンドを叩くと、以下のヘルプが出てくるので、これを見れば大抵わかります。


>icacls

ICACLS <名前> /save <ACL ファイル> [/T] [/C] [/L] [/Q]
名前が一致するすべてのファイルとフォルダーの DACL を <ACL ファイル> に
格納して、後で /restore で指定できるようにします。SACL、所有者、整合性
ラベルは保存されません。

ICACLS <ディレクトリ> [/substitute <旧 SID> <新 SID> [...]] /restore:<ACL ファ
イル> [/C] [/L] [/Q]
格納されている DACL を <ディレクトリ> 内のファイルに適用します。

ICACLS <名前> /setowner <ユーザー> [/T] [/C] [/L] [/Q]
すべての一致する名前の所有者を変更します。このオプションは所有権の変更を
強制しません。所有権の変更を行うには、takeown.exe ユーティリティを使用し
ます。

ICACLS <名前> /findsid <SID> [/T] [/C] [/L] [/Q]
<SID> が明示されている ACL を含むすべての一致する名前を検索します。

ICACLS <名前> /verify [/T] [/C] [/L] [/Q]
ACL が正規の形式ではないか長さが ACE 数と一致しないすべてのファイルを
検索します。

ICACLS <名前> /reset [/T] [/C] [/L] [/Q]
すべての一致するファイルについて、ACL を継承された既定の ACL と置換します。

ICACLS <名前> [/grant[:r] <SID>:perm[...]]
[/deny <SID>:perm [...]]
[/remove[:g|:d]] <SID>[...]] [/T] [/C] [/L] [/Q]
[/setintegritylevel Level:policy[...]]

/grant[:r] <SID>:perm は、指定されたユーザー アクセス権を付与します。
:r を指定すると、以前に付与されたすべての明示的なアクセス許可は新しい
アクセス許可に置き換えられます。
:r を指定しない場合、新しいアクセス許可は以前に付与された明示的な
アクセス許可に追加されます。

/deny <SID>:perm は、指定されたユーザー アクセス権を明示的に否定します。
指定されたアクセス許可の明示的な否定 ACE が追加され、明示的な許可内容
に含まれた同じアクセス許可は削除されます。

/remove[:[g|d]] <SID> は、ACL 内にあるすべての <SID> を削除します。
:g を指定すると、その SID に対して許可されたすべての権限を ACL から
削除します。
:d を指定すると、その SID に対して否定されたすべての権限を ACL から
削除します。

/setintegritylevel [(CI)(OI)] レベルは、すべての一致するファイルに整合性
ACE を追加します。このレベルは次の 1 つとして指定されます。
L[ow]
M[edium]
H[igh]
整合性 ACE の継承オプションは、レベルの前に配置でき、
ディレクトリに対してのみ適用されます。

/inheritance:e|d|r
e - 継承を有効にします。
d - 継承を無効にし、ACE をコピーします。
r - 継承された ACE をすべて削除します。


注意:
<SID> は数値形式またはフレンドリ名形式で指定できます。数値形式の場合は、
SID の始めに * を付けます。

/T は、<名前> で指定されたディレクトリ以下のすべての一致するファイルと
ディレクトリに対してこの処理が実行されることを指定します。

/C は、どのようなファイル エラーが発生してもこの処理が続行されることを
指定します。ただしエラー メッセージは表示されます。

/L は、この処理がターゲットではなくシンボリック リンク自体に対して実行
されることを指定します。

/Q は、icacls が成功のメッセージを抑制することを指定します。

ICACLS は、ACE エントリの正規の順序を維持します:
明示的な否定内容
明示的な許可内容
継承された否定内容
継承された許可内容

perm はアクセス許可マスクであり、次の 2 種類の方法で指定できます:
単純な権限を列挙:
N - アクセス権なし
F - フル アクセス権
M - 変更アクセス権
RX - 読み取りと実行のアクセス権
R - 読み取り専用アクセス権
W - 書き込み専用アクセス権
D - 削除アクセス権
特定の権限をコンマ区切りでかっこ内に列挙:
DE - 削除
RC - 読み取り制御
WDAC - DAC の書き込み
WO - 所有者の書き込み
S - 同期
AS - システム セキュリティへのアクセス
MA - 無制限
GR - 一般的な読み取り
GW - 一般的な書き込み
GE - 一般的な実行
GA - 一般的なすべての操作
RD - データ読み取り/ディレクトリの一覧表示
WD - データ書き込み/ファイルの追加
AD - データの追加/サブディレクトリの追加
REA - 拡張属性の読み取り
WEA - 拡張属性の書き込み
X - 実行/スキャン
DC - 子の削除
RA - 属性の読み取り
WA - 属性の書き込み
継承権限はどちらの形式の前にも配置でき、ディレクトリにのみ適用され
ます:
(OI) - オブジェクト継承
(CI) - コンテナー継承
(IO) - 継承のみ
(NP) - 継承を適用しない
(I) - 親コンテナーから継承した権限

例:

icacls c:\windows\* /save <ACL ファイル> /T
- c:\windows より下にあるすべてのファイルとサブディレクトリの ACL を
<ACL ファイル> に保存します。

icacls c:\windows\ /restore <ACL ファイル>
- <ACL ファイル> 内のファイルのうち c:\windows とそのサブディレクトリ
内に存在するすべてのファイルの ACL を復元します。

icacls <ファイル> /grant Administrator:(D,WDAC)
- Administrator ユーザーに、<ファイル> に対する削除および DAC 書き込み
のアクセス許可を与えます。

icacls <ファイル> /grant *S-1-1-0:(D,WDAC)
- SID S-1-1-0 によって定義されたユーザーに、<ファイル> に対する削除
および DAC 書き込みのアクセス許可を与えます。






アクセス許可
アクセス許可を与えるは、/grant オプションを使います。
例えば、\\server\test に hodomain\user1 ユーザで"変更"の権限を加えるには以下のようにします。

icacls \\server\test /grant hodomain\user1:(OI)(CI)M

(OI)(CI)は継承をするという設定です。これを付けないと指定したフォルダのみにアクセス権が付与され、そのフォルダ配下は変更されません。

アクセス拒否
アクセス拒否の場合は、/deny オプションを使います。
以下の例は、user1の削除アクセス権を拒否する設定です。

icacls \\server\test /grant hodomain\user1:(OI)(CI)D


ACL削除
設定されたアクセス権を削除する場合は、/remove オプションを使います。

icacls \\server\test /remove hodomain\user1



アクセス許可マスク
一般的というか単純な権限のアクセス許可マスクは以下のようになります。

N - アクセス権なし
F - フル アクセス権
M - 変更アクセス権
RX - 読み取りと実行のアクセス権
R - 読み取り専用アクセス権
W - 書き込み専用アクセス権
D - 削除アクセス権


次は特殊なアクセス許可の指定ですが、以下のアクセス許可マスクが利用できるようです。
カッコ内に書き、複数指定する場合は、カンマ区切りになるようです。

DE - 削除
RC - 読み取り制御
WDAC - DAC の書き込み
WO - 所有者の書き込み
S - 同期
AS - システム セキュリティへのアクセス
MA - 無制限
GR - 一般的な読み取り
GW - 一般的な書き込み
GE - 一般的な実行
GA - 一般的なすべての操作
RD - データ読み取り/ディレクトリの一覧表示
WD - データ書き込み/ファイルの追加
AD - データの追加/サブディレクトリの追加
REA - 拡張属性の読み取り
WEA - 拡張属性の書き込み
X - 実行/スキャン
DC - 子の削除
RA - 属性の読み取り
WA - 属性の書き込み


例えば、あるフォルダの "データ読み取り/ディレクトリの一覧表示" と "削除" のみを許可する権限を付け、配下のフォルダにも継承させる場合は以下のようにします。

icacls \\server\test /grant hodomain\user1:(OI)(CI)(RD,DE)



継承
普通、フォルダは親フォルダのアクセス権を継承されています。
なので、トップフォルダがEveryoneのアクセス許可があって、配下のフォルダは特定のアカウントしかアクセスさせないようにするには、ACLを変更する前に継承を無効にしないといけません。
その為の設定が、/inheritance です。(なぜかWindowsServer2003版のicaclsではヘルプに無いですが、利用は出来ます)

例えば親フォルダの継承を解除し、親から設定されたアクセス権を削除するには以下のようにします。

icacls C:\test /inheritance:r

また、親フォルダの継承を解除し、親から設定されたアクセス権をコピーするには以下のようにします。

icacls C:\test /inheritance:d

eを指定すると継承が有効になります。

また、上述したとおり、/grant や /deny でACL編集する場合、(OI)(CI) を指定しないと、継承が有効にならないため、サブフォルダに適用されません。


ACLの表示、保存、復元
ACLの一覧表示は、パスを指定するだけでOKです。


icacls \\server\test /t
\\server\test HOGEDOMAIN\alluser:(RX)
HOGEDOMAIN\administrator:(I)(OI)(CI)(F)

\\server\test1 HOGEDOMAIN\user01:(OI)(CI)(M)
HOGEDOMAIN\administrator:(OI)(CI)(F)
HOGEDOMAIN\devlop:(OI)(CI)(F)

\\server\test2 HOGEDOMAIN\administrator:(I)(OI)(CI)(F)
HOGEDOMAIN\devlop:(I)(OI)(CI)(F)

/t オプションを指定すると、サブフォルダ,ファイルも再帰的に表示してくれます。
/save オプションをつけると、ファイルに保存ができます。(ただ保存されたファイルは、SDDL形式で保存されるため編集には不向きかもしれません)
/saveで保存したACLは /restore オプションで復元ができます。

icacls \\server\test /restore e:\acl.txt



ACLのバックアップ、復元ができるのは非常に運用面から言うとありがたいですね。


参考:
ICACLSを使ってアクセス権限をコマンドラインで変更する方法 - http://pnpk.net
@IT:icaclsコマンドでファイルのアクセス制御リストACLを保存/復元する
@IT:ファイルやフォルダのアクセス権をリセットして親フォルダから継承させる
[PR]
by jehoshaphat | 2014-01-29 23:55 | 豆知識 | Trackback | Comments(0)
xcaclsが使えないため、icaclsをXPで動かすようにした

EMCのストレージサーバVNXeでCIFSの共有フォルダサーバを構築しました。
VNXeはActiveDirectory環境が構築されていれば、共有フォルダ上のファイルやフォルダのアクセス権がNTFSボリュームのよう自由自在にできるのが素晴らしいです。
(Linuxを使ってる某サプライメーカーのNASはトップレベルの共有フォルダしかアクセス権設定出来なかったもんで。。。)

で、VNXeで千個近くのフォルダのアクセス権の設定をGUIからやってると日が暮れるので、自動でやってしまおうと思いました。(クライアントの環境はXPです)
一般的なアクセス権はcacls.exe を使ってACL(NTFSアクセス権)を設定するでも書いたように、caclsコマンドが使えます。
また、caclsで設定できない特殊なアクセス権もxcacls.vbsを使って詳細なACL(NTFSアクセス権)を変更するで紹介した xcacls.vbs を使おうとしたのですが、実行すると以下のエラーになりました。

Error -2147023174: occurred in connecting to server. (Msg#3203)
Error description: RPC サーバーを利用できません。


xcacls.vbsは接続先のサーバのWMIをRPCで操作してACLを設定してるわけなので、WindowsOSではないVNXeに対して実行するとエラーになるのも当然ですね。

で、WindowsServer2003(SP2以降),WindowsVistaから付属してる icacls というコマンドなら、RPC使わずに特殊なアクセス権も設定できるということで試そうかと思いました。

しかし、共有フォルダの運用管理しているPCのOSは XP(x86) です。
試しに、Windows7 の端末から icscls.exe (system32配下にあります)を抜いて来ましたが、XP上では動きませんでした。

今度は、WindowsServer2003 SP2(x86) から icscls.exe を抜くと動きそうな感じですが、以下のように表示がうまくされません。

D:\>icacls

ICACLS <



@IT:icaclsコマンドでファイルのアクセス制御リストACLを保存/復元するによると、これはヘルプが上手く表示されないだけで機能的には正しく動作するようです。
しかし、ヘルプが見れないと不便なので、パッチを当てることにしました。
パッチはWindowsServer2003側で適用しないといけません。(再起動は必要有りませんでした)
パッチはMSサポート:>Windows Server 2003 SP2 を実行しているコンピューター上のファイルまたはフォルダーの所有権を設定する Icacls.exe ユーティリティを実行するとエラー メッセージ: アクセスが拒否されました"Windows Server 2003 SP2 を実行しているコンピューター上のファイルまたはフォルダーの所有権を設定する Icacls.exe ユーティリティを実行するとエラー メッセージ: アクセスが拒否されました"から入手可能です。

パッチ適用前と後では icacls.exe のファイル情報は以下のように変わります。

・適用前
バージョン: 5.2.3790.3959
ファイルサイズ: 35,840 バイト
  ↓
・適用後
バージョン: 5.2.3790.4243
ファイルサイズ: 36,352 バイト

これで、パッチ適用後のサーバから iecacls.exe を抜いてXPで動かすと問題なく実行できました。
[PR]
by jehoshaphat | 2014-01-28 23:49 | 豆知識 | Trackback | Comments(0)
Symantec Backup Exec System Recovery 7.0でバックアップができなくなった
Symantec Backup Exec System Recovery 7.0(7.0.5.29755) を WindowsServer2003 R2(x86) に入れているんですが、バックアップができていないことに気付きました。
ユーザがログオンするたびに、タスクトレイ付近にバルーンが表示され今すぐバックアップするかみたいなことを聞いてきたので、バックアップをかけたんですが、なぜか94%で止まってしまいます。

Backup Execのイベントログを見ると以下のようになってました。

情報6C8F17E7: 同じジョブの以前のリカバリポイントが処理中のため、自動リカバリポイントは作成されませんでした。
詳細: 操作は中断されました


で、原因と対処法をググったところ、コンピュータ系サラリーマンブログ: BESR エラーEBAB03F1: 操作は中断されました. 0x80004004に解決策がありました。

手順としては参考先そのままですが、以下のとおりです。(バックアップジョブがクリアされるので設定等を別途メモっておくと良いです)

1.タスクマネージャーから、vprotray.exe を Kill。
2.Windowsのサービスから、Backup Exec System Recovery サービスを停止。
3.C:\Documents and Settings\All Users\Application Data\Symantec\Backup Exec System Recovery\Schedule 以下の PQJ ファイルを別のところに退避。
4.C:\Documents and Settings\All Users\Application Data\Symantec\Backup Exec System Recovery\History 以下の PQH ファイルを別のところに退避。
5.Backup Exec System Recovery サービスを再開。
6.コンソールからバックアップジョブを実行し、エラーが出なくなった確認。


上記の手順でやればよーやくまともにバックアップが走るようになりました。
やれやれです。
[PR]
by jehoshaphat | 2014-01-27 23:48 | ツール | Trackback | Comments(0)
(.NET)ClickOnceで発行後にアプリを起動すると「配置IDがサブスクリプションと一致しません」と怒られる
ClickOnceでアプリケーションを配置してるんですが、バグを修正し新バージョンを発行しなおしました。
それでクライアント側のショートカットからアプリケーションを起動しようとすると、更新チェック後にエラーが発生し起動できません。
(ちなみに、アプリケーションのショートカットからでなく、ブラウザから起動すると別物してインストールされてしまいます。何故かアプリケーション名に -1 が付きます)

エラーの詳細を見たところ内容は以下のような感じでした。

エラー
プラットフォームのバージョン情報
Windows : 6.1.7601.65536 (Win32NT)
Common Language Runtime : 4.0.30319.18408
System.Deployment.dll : 4.0.30319.18408 built by: FX451RTMGREL
clr.dll : 4.0.30319.18408 built by: FX451RTMGREL
dfdll.dll : 4.0.30319.18408 built by: FX451RTMGREL
dfshim.dll : 4.0.31106.0 (Main.031106-0000)

ソース
配置の URL: file:///C:/Users/hoge/AppData/Roaming/Microsoft/Windows/Start%20Menu/Programs/testapp/hogehogeapp.appref-ms%7C
サーバー: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
配置プロバイダの URL: http://xxx.xxx.xxx.xxx:/testapp/hogehogeapp.application

エラーの概要
以下はエラーの概要です。これらのエラーの詳細はログに一覧表示されています。
* C:\Users\hoge\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\testapp\hogehogeapp.appref-ms| のライセンス認証により例外が発生しました。 次の失敗メッセージが検出されました:
+ 配置 ID がサブスクリプションと一致しません。

コンポーネント ストア トランザクションの失敗の概要
トランザクション エラーは検出されませんでした。

警告
この操作中に警告は発生しませんでした。

操作の進行状況
* [2014/01/24 16:33:32] : C:\Users\hoge\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\testapp\hogehogeapp.appref-ms| のライセンス認証が開始されました。
* [2014/01/24 16:33:32] : 配置で指定されたように必要な更新チェックを実行しています。

エラーの詳細
この操作中に次のエラーが検出されました。
* [2014/01/24 16:33:32] System.Deployment.Application.DeploymentException (SubscriptionState)
- 配置 ID がサブスクリプションと一致しません。
- ソース: System.Deployment
- スタック トレース:
場所 System.Deployment.Application.SubscriptionStore.CheckUpdateInManifest(SubscriptionState subState, Uri updateCodebaseUri, AssemblyManifest deployment, Version currentVersion, Boolean& bUpdateInPKTGroup)
場所 System.Deployment.Application.ApplicationActivator.PerformDeploymentUpdate(SubscriptionState& subState, String& errorPageUrl)
場所 System.Deployment.Application.ApplicationActivator.ProcessOrFollowShortcut(String shortcutFile, String& errorPageUrl, TempFile& deployFile)
場所 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
場所 System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

コンポーネント ストア トランザクションの詳細
トランザクション情報はありません。


エラーは「ライセンス認証により例外が発生しました」となり、原因が「配置 ID がサブスクリプションと一致しません。」となっています。

ClickOnce用にしている証明書が変更されたりすると、別アプリと認識され、このようなエラーが出ることは知っていましたが、今回は証明書は変更してません。

いろいろ調べてみるとMSDN:.NET Framework 2.0 ベースのアプリケーションでClickOnce の証明書を変更すると別のアプリケーションとして認識されるに気になる記述が。。。


.NET Framework 2.0 は以下の 4 つの項目を基に ClickOnce アプリケーションの一意性を識別します。.NET Framework は 各項目の 1 つでも異なる場合には別アプリケーションとして識別し、新規インストールを実施します。

アプリケーション名 <name>
公開キー トークン <publicKeyToken>
カルチャ <language>
プロセッサアーキテクチャ (x86 など) <processorArchitecture>

(.NET Framework 2.0 SP1 が当たっていると、アプリケーション名、カルチャ、プロセッサアーキテクチャの項目でアプリケーションを識別するようです。)

ここでピンと来たのがプロセッサアーキテクチャです。
そういえば、ビルドがうまくいかくて、VisutalStudio でプロセッサアーキテクチャを "x86" から "ANY CPU" に変えてました。

この問題のアプリケーションのクライアント側のClickOnceのショートカットをテキストエディタで見てみると、以下のようになっていました。

http://xxx.xxx.xxx.xxx:/testapp/hogehogeapp.application, Culture=neutral, PublicKeyToken=4fdc3b94a306e3c2, processorArchitecture=x86

確かにまともに動いていた時はプロセッサアーキテクチャはx86だったようです。

VS側で "ANY CPU" を "x86" に戻してビルドしなおし発行したところ、今度はエラーが出ず最新版に置き換わりました。

まったくヤレヤレです。
ClickOnceは確かに手軽にクライアントへの展開ができるから便利なんですが、アップデート絡みになるといろいろかゆいところに手が届かず困ります。
そもそも証明書なしでも展開できるような仕組みにして欲しかったです。(例えばクライアントが自身とClickOnce発行サーバのIP確認して同じサブネットなら証明書なしでも起動できるとか。。。)
[PR]
by jehoshaphat | 2014-01-26 23:46 | .Net開発 | Trackback | Comments(0)
(Linux)VMware Player5.0でネットワークのブリッジ先NICを指定したい
Fedora18の環境に VMware Player5.0を入れています。この端末はNICが二つあり、それぞれセグメントが異なります。

VMware Player上の仮想マシンで仮想NICをブリッジモードにしたいのですが、どちらの物理NICに接続するかの設定がありません。

でぐぐってみると、以下のコマンドからGUIでネットワークの設定ができるようです。

# /usr/lib/vmware/bin/vmware-netcfg


デフォルトだと以下のような画面が立ち上がってきます。
e0091163_4434865.jpg


vmnet0がブリッジになっていますが、どのNICにつなぐかというところが Automatic になっています。

このブリッジ先を明示的に指定してやればOKです。もう片方のNICにブリッジするために、Add Network で新しい vmnet を作成し、そこにもう片方のNICを指定します。
以下の例だと、vmnet0 は em1 、vmnet2 は p6p1 のネットワークインターフェースを使うようになります。
e0091163_4435585.jpg


後は、仮想マシン側の設定です。
仮想マシンの設定ファイル(.vmxファイル)のネットワーク設定を以下のようにします。

ethernet0.connectionType = "custom"
ethernet0.vnet = "VMnet2"


設定ファイルを保存後、GUIで仮想マシンの設定画面を開くと以下のように vmware-netcfg で定義されている VMnet を選べるようになります。
e0091163_444333.jpg


参考:
れぶろぐ - [VMware] VMware Player で vmnet2 などのカスタムネットワークを使う方法
vmware-netcfg とゲストOSのフルバックアップ - labunix の ラボゆにっくす
VMWare Player のゲスト OS からどうしてもブリッジで接続できない場合の対処 - suer のブログ (Windows版でVM4.0以前はインストーラを解凍してvmnetcfg.exeを起動すればいいようです。)
[PR]
by jehoshaphat | 2014-01-26 06:43 | 仮想化 | Trackback | Comments(0)
CentOS5で日本語入力をできるようにする
(Linux)最小構成でインストールしたCentOS5でGNOMEを利用できるようにする手順で、GNOMEを入れたんですが、日本語入力ができません。
ということで日本語入力をできるようにしてみました。

まずGNOME上で、インプットメソッドが入っているのかどうか確認してみました。
ログイン後、[システム]→[設定]→[他の個人設定]→[入力メソッド]を見たところ、[システム設定に従う[none]]になっていました。
どうやらインプットメソッドが入っていないようです。
(恥ずかしながら3流PGは「インプットメソッド」と「日本語入力システム」とを混同していました。Windowsだと、インプットメソッドは「IME」,日本語入力システムは「MS-IME」や「ATOK」、「Google日本語入力」となります。)

日本語入力の定番の Anthy には以下のようにインストールされていました。

# rpm -qa | grep anthy
anthy-7900-4.el5
scim-anthy-1.2.0-6.el5


CentOSの場合、以下のグループパッケージをインストールすることで、インプットメソッドも一緒にインストールしてくれるようです。

# yum -y groupinstall "Japanese Support"

上記を実行してみると、[システム]→[設定]→[他の個人設定]→[入力メソッド]が none だったのが、SCIM になっていました。(SCIMはLinuxで定番のインプットメソッドだそうです。最近は、ibusというのがシェアを広げてるようです)

これで、GNOME環境で、Ctrl+Spaceキーを押下すると日本語入力ができるようになりました。


参考:
CentOS5.3の日本語化 - SUNRISE5.0 TechNote
日本語入力システム(インプットメソッド)とは|IMEとの違い
[PR]
by jehoshaphat | 2014-01-25 06:36 | Linux | Trackback | Comments(0)