SQLの窓

2018年03月09日


Windows7 と Windows10 : MSG コマンドを使えるようにするには ( msg.exe )

職場と自宅と両方でテストしました。職場ではファイヤーウォールの設定が必要だったのですが、自宅では必要無いようでした。職場の PC は他にもセキュリティの設定が入っているので、それが影響しているかもしれません。ファイヤーウォール側の意味あいはイマイチ良く解ってませんが、もし 1722 となった場合は設定してみるとうまく行くかも解りません。

通常は、5 のエラーコードが返って来ますが、一番重要な AllowRemoteRPC を 1 にする設定がなされていなくても 5 のエラーコードが返ると思いますが、経験上 5 は資格情報のようなので、同一ユーザーで同一パスワードの場合は何も問題なく実行できると思います。

これは、net view コマンドも同様で、同一ユーザーで同一パスワードの場合は表示されると思います。別ユーザであったり、パスワードが異なる場合は、コントロールパネルの資格情報マネージャでその PC に向けての PC名、ユーザ、パスワードを記憶させておけば MSG も NET VIEW も使用可能でした。( 登録するユーザとして Adminstrator を使うと、User グループのユーザから、通常管理者ユーザへ送れました。ひょっとしたら、資格情報として登録する場合 Administrators グループなら良いのかもしれませんが、そこまでテストしていません。しかし、どうせ登録するのならば、Administrator のほうが管理しやすいでしょう。 )

Windows10 でコントロールパネルを表示するのは、ファイル名を指定して実行で、control と入力するといいと思います。( あるいは、デスクトップアイコンとしてコントロールパネルを表示するようにテーマの設定から行います )

ファイヤーウォールの設定

セッション名の取得エラー 1722 となりました。以下の設定を行って、AllowRemoteRPC を 1 にして、両方の PC に同一ユーザ名と同一パスワードで動作確認しました。( Windows7 => Windows10 と Windows10 => Windows7 )

とにかく設定変更したら再起動したほうが問題を排除しやすいと思います。(リモートアクセスで開いた側の PC から自分に送ったらリモートアクセス側に戻るという面白い現象も経験しました。)


( 全て有効にします )

C:\Users\lightbox>msg lightbox /server:pc-024 こんにちは
セッション名の取得エラー 5
セッション名の取得エラー 5 のエラーは、AllowRemoteRPC の設定と ユーザ・パスワードの不一致で起こると思われます

コントロールパネルの資格情報マネージャーで Windows 資格情報をあらかじめ登録しておくと利用できます。Adminstrator を登録しておくと他のユーザでも使えるようです( 何か他に条件があるのかもしれませんがテストした内容からするとそんな感じです )

環境によっては、pc 名では無く ipアドレスで直接指定するといいと思います。
メッセージを受けるほうの PC で、以下のレジストリ( AllowRemoteRPC )を 1 に変更します
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"AllowRemoteRPC"=dword:00000001

▼ デフォルトに戻す
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"AllowRemoteRPC"=dword:00000000


レジストリの位置を開くスクリプト
strParam = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"

' レジストリ書き込み用
Set WshShell = CreateObject( "WScript.Shell" )
' WMI用
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

' レジストリエディタが最後に開いていたキーの登録を行います
strPath = "Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey"
if GetOSVersion() >= 6 then
	strRegPath = "コンピュータ\" & strParam
else
	strRegPath = "マイ コンピュータ\" & strParam
end if

' 既に regedit が実行中の場合はいったん終了させます
Set colProcessList = objWMIService.ExecQuery _ 
	("Select * from Win32_Process Where Name = 'regedit.exe'") 
For Each objProcess in colProcessList
	' 最後のウインドウの位置とサイズを保存する為の終わらせ方
	WshShell.AppActivate("レジストリ エディタ")
	Wscript.Sleep(500)
	WshShell.SendKeys ("%{F4}")
	Wscript.Sleep(500)
	' 上記終わらせ方が失敗した時の強制終了
	on error resume next
	objProcess.Terminate() 
	on error goto 0
Next 

WshShell.RegWrite "HKCU\" & strPath, strRegPath, "REG_SZ"

' レジストリエディタを起動します
Call WshShell.Run( "regedit.exe" )
' レジストリエディタが終わるまで待つ場合は以下のようにします
' Call WshShell.Run( "regedit.exe", , True )

REM **********************************************************
REM OS バージョンの取得
REM **********************************************************
Function GetOSVersion()

	Dim colTarget,str,aData,I,nTarget

	Set colTarget = objWMIService.ExecQuery( _
		 "select Version from Win32_OperatingSystem" _
	)
	For Each objRow in colTarget
		str = objRow.Version
	Next

	aData = Split( str, "." )
	For I = 0 to Ubound( aData )
		if I > 1 then
			Exit For
		end if
		if I > 0 then
			nTarget = nTarget & "."
		end if
		nTarget = nTarget & aData(I)
	Next

	GetOSVersion = CDbl( nTarget )

End Function

MSG コマンドの引数

MSG {ユーザー名 | セッション名 | セッション ID | @ファイル名 | *}
    [/SERVER:サーバー名] [/TIME:秒] [/V] [/W] [メッセージ]

  ユーザー名          送信先のユーザー名を指定します。
  セッション名        セッション名を指定します。
  セッションID        セッション ID を指定します。
  @ファイル名         メッセージの送信先一覧のファイル (ユーザー名、
                      セッション名、セッション ID) を指定します。
  *                   指定されたサーバーのすべてのセッションにメッセージを
                      送信します。
  /SERVER:サーバー名  送信先のサーバーを指定します (既定値は現在のサーバー)。
  /TIME:秒            受信者の確認応答までの待ち時間を指定します。
  /V                  実行中に詳細情報を表示します。
  /W                  ユーザーからの応答を待ちます。通常 /V オプションと共に
                      指定します。
  メッセージ          送信するメッセージを指定します。指定しない場合は、入力
                      プロンプトが表示されるか、または stdin から読み取ります。
posted by lightbox at 2018-03-09 18:13 | Windows7 | このブログの読者になる | 更新情報をチェックする

2018年01月20日


Windows7 / 10 : イベントビュアーのログの設定をコマンドラインより行う(クリアを含む)



この画像はデフォルト状態ですが、以下はコマンドラインより現在の状態を表示したものです。
C:\Users\lightbox>wevtutil gl Application
name: Application
enabled: true
type: Admin
owningPublisher:
isolation: Application
channelAccess: O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU
)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)(A;;0x3;;;S-1-5-33)(A;;0x1;;;S-1-5-32-573)
logging:
  logFileName: %SystemRoot%\System32\Winevt\Logs\Application.evtx
  retention: false
  autoBackup: false
  maxSize: 20971520
publishing:
  fileMax: 1

C:\Users\lightbox>wevtutil gl Security
name: Security
enabled: true
type: Admin
owningPublisher:
isolation: Custom
channelAccess: O:BAG:SYD:(A;;0xf0005;;;SY)(A;;0x5;;;BA)(A;;0x1;;;S-1-5-32-573)
logging:
  logFileName: %SystemRoot%\System32\Winevt\Logs\Security.evtx
  retention: false
  autoBackup: false
  maxSize: 20971520
publishing:
  fileMax: 1

C:\Users\lightbox>wevtutil gl System
name: System
enabled: true
type: Admin
owningPublisher:
isolation: System
channelAccess: O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x3;;;BO)(A;;0x5;;;SO
)(A;;0x1;;;IU)(A;;0x3;;;SU)(A;;0x1;;;S-1-5-3)(A;;0x2;;;S-1-5-33)(A;;0x1;;;S-1-5-
32-573)
logging:
  logFileName: %SystemRoot%\System32\Winevt\Logs\System.evtx
  retention: false
  autoBackup: false
  maxSize: 20971520
publishing:
  fileMax: 1


[必要に応じてイベントを上書きする] : retention = false、autoBackup = false
[イベントを上書きしないでログをアーカイブする] : retention = true、autoBackup = true
[イベントを上書きしない (ログは手動で消去)] : retention = true、autoBackup = false

2番目の、「イベントをイベントを上書きしないでログをアーカイブする」を、アプリケーションログで実行すると以下のようになります。

wevtutil sl Application /rt:true /ab:true

アプリケーションログの最大サイズの設定は以下のようになります( バイト )

wevtutil sl Application /ms:20971520

アプリケーションログのクリア(バックアップなし)は以下のようになります

wevtutil cl Application

※ 管理者権限でコマンドプロンプトを開いて実行してください

posted by lightbox at 2018-01-20 20:40 | Windows7 | このブログの読者になる | 更新情報をチェックする

2017年12月12日


Windows7(32ビット) が急にフリーズして、メモリ診断して OK だったけれど、結局メモリの障害だった経緯で行った事

デュアルブートの PC で、両方に Windows7(32ビット)をインストールしています。ある日その片側でフリーズしたのが始まりでしたが、とりあえずメモリ診断やったんですが、その時は異常ありませんでした。



その後、もう一方の Windows7 を立ち上げて Google Chrome の操作をしていると画面が乱れて固まりました。当然『電源長押し』で対処するしか無く、しかし BIOS の画面が表示されてエラー云々。標準の設定で保存して再起動しました。

同一 PC で二つの OS で同様のトラブルなので、共通するのはハード(特にメモリ)なんですが、一応『トレンドマイクロ オンラインスキャン』でウイルスチェックをしてみました。放置してしばらくして PC の前にやってくると PC は死んでました。

なんとかいろいろあって、再度立ち上げて再び『メモリ診断』すると、01% から動かず、放置して帰ってくるとまた死んでました。

もう、メモリが原因なのはほぼ決定と言う事でメモリ抜いてもう一度指しなおして再起動。しかし、反応せず(ディスプレイに信号が来ない)。そこで、たださし直すのでは無くかなり力を入れてグィっと差し込んで再起動してみました(一応表面のほこりと、マザーボード側のほこりはみみかきの綿部分で排除)。

すると正常に立ち上がり、すぐメモリ診断しましたが異常なし。でも、最初のメモリ診断でも問題なかったので、以下の処理を行いました。
1) 管理者権限のコマンドプロンプトで chkdsk /F
2) 管理者権限のコマンドプロンプトで SFC /SCANNOW
3) トレンドマイクロ オンラインスキャン
特に問題なく全て終了したので、裏側の Windows7 でも 1) と 2) を行いましたが、異常ありません。 この作業は二日にまたいでまして、その間あった事 一度、ブルースクリーンになったので、BlueScreenView というフリーソフトがある事を知りました。いつか使えるかもしれません。 気になって Windows Update 調べたら、たまたま Windows Update も死んでて、その対応にも追われました。 (Windows7 で Microsoft(Windows) Update ができなくなる状態の解消方法) Google Chrome も死亡してしまって、User Data を移動して再インストールしました。User Data の中のブックマークだけ戻して再運用してます
1) C:\Users\ユーザ\AppData\Local\Google\Chrome\User Data を適当な場所へ移動
2) Chroem アンインストール
3) Chroem インストール
4) 移動 User Data の中の Default\Bookmarks を新しい 場所へコピー
Google Chrome は以前からメモリを使いすぎると思ってたので、設定変更しました。 この PC は、以前も一度メモリがぶっ壊れて買い換えてます。その時は新品のぶっ壊れたメモリと同じものもらいましたが、怖いので違うものが今刺さってます。なので、こんどなんかあったら買い替えなれければと思っています。 しかし、メモリの抜き差しの2回目で改善するって、運がいいのか悪いのか...
タグ:トラブル
posted by lightbox at 2017-12-12 18:02 | Windows7 | このブログの読者になる | 更新情報をチェックする

2017年12月11日


Windows7 で Microsoft(Windows) Update ができなくなる状態の解消方法

wuauclt /ShowWU で表示される画面で以下のようになり、なにもできない状態です
( 2017 年 12 月 4 日 (月曜日) より発生との事 ) 

▼ Windows7 32ビット


▼ Windows7 64ビット


▼ Microsoft の対応解説ページ
Windows 7 / Windows Server 2008 R2 以前の環境において、Microsoft Update 実行時に 0x80248015 エラーが発生する

以下のバッチファイルを管理者として実行します
net stop wuauserv
net stop bits

ren %systemroot%\SoftwareDistribution SoftwareDistribution.old

del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr0.dat"
del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr1.dat"

net start bits
net start wuauserv

wuauclt /detectnow

BITS は、Background Intelligent Transfer Service で、wuauserv は Windows Update です


実行後、wuauclt /ShowWU 等で Windows Update の UI を表示させると、表示のおかしかった下部に正しい表示がされて、更新可能になります。






posted by lightbox at 2017-12-11 12:04 | Windows7 | このブログの読者になる | 更新情報をチェックする

2017年12月05日


Windows SDK の mt.exe を使用して、既存の exe を常に管理者権限で起動を求めるように変更する

Microsoft Windows SDK for Windows 7 and .NET Framework 4

テストしたのは、TeraPad.exe です。ショートカットアイコンを作成するとこんなアイコンになりました。(右側は AN HTTP Server です)

 

マニフェストファイルの作成

TeraPad.exe と同じディレクトリに、TeraPad.exe.manifest を作成して以下のような内容を書き込みます
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"  
    manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
        <requestedPrivileges> 
        <requestedExecutionLevel 
        level="requireAdministrator"/> 
        </requestedPrivileges> 
    </security> 
    </trustInfo> 
</assembly>

これに関しては、アプリケーション開発者向け Microsoft Windows 7 対応アプリケーションの互換性 で記述されています。

mt.exe で manifest を埋め込めるという事が上記リンクに書かれてあったので、試してみました。コマンドラインは以下のようになっています。
"C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\mt.exe" -manifest TeraPad.exe.manifest -outputresource:TeraPad.exe
このコマンドラインは、『マニフェストを C/C++ アプリケーションに埋め込む』に書かれています。

変更した exe と 元の exe を fc /b で比較すると、確かに違うものである事が確認されました。さらに、変更された exe を他の場所にコピーして実行しても、管理者である事を確認する『暗転+ダイアログ表示』が実行されることが確認できました。

インストール直後から管理者マーク

つまり、ビルド時にすでにそのような要件の元作成されているアプリケーションは、自動的に管理者の盾マークが表示されているので、それを削除する事は通常できません。

関連する記事

実運用では無く、学習用の WWWサーバーとしてはこれ以外に無い『AN HTTP Server』ですが、古いソフトなので使い方にコツがあります



posted by lightbox at 2017-12-05 19:43 | Windows7 | このブログの読者になる | 更新情報をチェックする

2017年02月01日


RICOHのデジタルフルカラー複合機でスキャンしたPDFを自分のPCに保存する

RICOH MP C6004/C5504/C4504/C3504/C3004 : デジタルフルカラー複合機

目標は、ドメインで管理されているネットワークのPC への PDF の保存です。

その前にもっと簡単そうな、スキャンしたPDFをメールに添付して送るテストをしましたが、ごく普通のメールクライアントの設定で使用可能でした。



この段階でプリンタのタッチパネルの操作に慣れ、PC のブラウザからIPアドレスでアクセス可能な情報+操作ページのどこにどんな情報があるかに慣れました。

メールの場合は、いったんプリンタ内の共有フォルダに保存してから、ブラウザからの操作でメール送信を行います。また、メールを送る場合は、必ず送信者を指定する必要があるので、それ用のアドレス登録をしておきます(送信時のSMTPのユーザとパスワードはシステムで一つだけで、登録するのはユーザ毎の情報になります)。このアドレスは、PC の共有に対して PDF を送る時にも使用します。実運用としては、スキャン毎に共有アドレスとユーザとパスワードを毎回入力するのは無理がありますので必須です。

ブラウザからは、システムログの表示を見る事ができますが、ここにはエラーが起きた時にログが追加されるのでテストには重要な情報です。

アドレスは、直接入力が可能なので、その時はタッチパネルにエラーが表示されますが、登録済みのアドレスを使用した場合は、問題があればシステムログにのみ情報が出力されてタッチパネルは正常終了になります。

ドメイン + シマンテック + Windows Firewall

ドメインでは無く、シマンテックでなければ何も問題なく動作すると思います。但し、デジタルフルカラー複合機のデフォルトのワークグループは、『WORKGROUP』です。

まず、ドメインで管理されているので、デジタルフルカラー複合機のワークグループを変更する必要があります。この変更は、ブラウザより管理者としてログインして行いました。導入直後のユーザ名はすごくポピュラーなあれです。そしてパスワードは入っていません。

この変更後、コマンドプロンプトから net view を実行すると、プリンタのエントリが表示されます。

この後は、シマンテックとWindows Firewall を無効にして、自分の PC に共有を作成して保存のテストを行います。デジタルフルカラー複合機からPC の共有を参照して保存するので、ログインするユーザをアクセス許可に登録して、書き込み可にしておく必要があります。そして、セキュリティ管理上面倒な everyone は削除しておきます。

このユーザのログイン情報をデジタルフルカラー複合機に登録する際は、ユーザは ドメイン名\ユーザ名 で登録する必要があるので注意して下さい。

シマンテック の設定

重要なキーワードは SMB プロトコルです。そもそも、デジタルフルカラー複合機のネットワークの設定(ワークグループ)が SMB というカテゴリで設定されます。シマンテック の設定ではあまり気にする必要はありませんが、ポートとしては 137、138、139 という3つのポートを知っておく必要があります。(445 も知識としては重要です)

で、結局シマンテックはちょっとバグっぽいのですが、『ネットワーク脅威防止の設定』の『Microsoft Windows ネットワーク』タブにある、『ネットワーク上の他のユーザとファイルプリンタを共有する』にきちんとチェックが入るようにすれば良いです。

自分の環境では、このチェックが通常のチェックでは無く、部分的に有効な場合に使われる四角いチェックになっていました。なので、一度チェックを完全に外してから再度チェックすると問題無く動作しました。これに関してはネット上で同様の記事がありましたが、それでもダメな場合は、例のポートの受信を許可するようにルールを作成する必要があるでしょう。

Windows Firewall の設定

Windows Firewall では、137、138、139 の許可設定が、ファイアウォールのプロファイル毎に存在していました。なので、ドメイン用が無効になっていたので、有効にします(ポート毎に3つエントリがあるので、プロファイル毎で全部で9つあります)。これで動作するはずですが、面倒なら Firewall は一時的に止めてしまってもいいかもしれません。(時間のかかるアナログ作業を優先したほうがいい場合もあります)

※ 445 のエントリは SMB とコメントが書かれてありますが、そちらは通常は無視していいはずです。




タグ:SMB
posted by lightbox at 2017-02-01 20:38 | Windows7 | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり