SQLの窓

2018年08月10日


IE11 で『安全だとマークされていないActiveX』を使用可能にして実行可能な Windows 処理のサンプル

HTA(HTMLアプリケーション) のコードを html として IE11 でデバッグする方法 を行って、localhost や イントラネットのサーバを信頼するサイトに登録すると使えます。

実行は JavaScript で簡単な関数を用意して実行します。
ごみ箱 explorer.exe /n,::{645FF040-5081-101B-9F08-00AA002F954E}
ファイル名を指定して実行 rundll32.exe shell32.dll,#61
インイストールされたソフトウェア(プログラムと機能) rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl
ネットワーク接続 rundll32.exe shell32.dll,Control_RunDLL ncpa.cpl
環境変数ダイアログ rundll32.exe sysdm.cpl,EditEnvironmentVariables
Windows Update control.exe /name Microsoft.WindowsUpdate
デバイスマネージャ control.exe /name Microsoft.DeviceManager
フォルダオプション rundll32.exe shell32.dll,Options_RunDLL 7
ネットワークドライブの割り当てダイアログ rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL Connect
デスクトップアイコンの設定 control.exe desk.cpl,,0
メモ帳 notepad.exe
ペイント mspaint.exe
電卓 calc.exe
プリンタ一覧 control.exe /name Microsoft.DevicesAndPrinters
Microsoft Excel excel.exe
Microsoft Word winword.exe
マイドキュメント explorer C:\Users\%USERNAME%\Documents
リソープリンタ 管理ページ rundll32.exe url.dll,FileProtocolHandler http://192.168.10.37/
デスクトップの アプリケーション.mde C:\Users\%USERNAME%\Desktop\アプリケーション.mde
デスクトップの Book1.xlsx C:\Users\%USERNAME%\Desktop\Book1.xlsx
\\コンピューター名\共有 \\pc01\mydata\2018

用意する JavaScript の処理
<script>
function newObject( className ) {

	var obj;

	try {
		obj = new ActiveXObject( className );
	}
	catch (e) {
		obj = null;
	}

	return obj;

}

var wsh = newObject("WScript.Shell");

function wshRun( strPath ) {

	wsh.Run( "RunDLL32.EXE url.dll,FileProtocolHandler " + "\"" + strPath + "\"" )

}

function wshRunExe( strPath ) {

	wsh.Run( strPath )

}

</script>

Windows の一般アプリケーション(.exe) は、wshRunExe を使用します。拡張子による実行には、ファイルのパスを渡して wshRun を使用します。( strPath に渡すパス内の文字列は HTML 上に文字列として置く場合、 \ が \\ となるようにします )

\\コンピューター名\共有 のネットワーク参照は、A 要素で href に指定してエクスプローラで開く事ができます。




posted by lightbox at 2018-08-10 16:38 | IE | このブログの読者になる | 更新情報をチェックする

2017年03月16日


IE11 で VBScript を使う場合の注意事項 ( 古い社内アプリ移行時必見 )

2015/07/31
この記事書いてから一年以上経過しましたが、問題なくシステムは動作しています。ただ、最近は『互換表示設定』によって自動的にうまく行く方向ですが、いくつかバリエーションがあるので、それは記事最後に記述します

追記(2017/03/16)
VBScript の スクリプト要素の置く位置で、VBScript をデフォルトにできるのは、<meta http-equiv="x-ua-compatible" content="IE=8"> までです(かつ互換表示設定で動いています)。IE=9、IE=10 ではデフォルトにできないです。IE9 以降のテクノロジを使うには、いっその事、VBScript 関連のオブジェクト処理を JavaScript で書くか、実行単位で language="VBScript" を書くかの選択になると思います。(ウチでは当分 IE8 で運用予定ですが)

※ さらに、自分の環境では開発者ツール開いてると何故かデフォルトにできないのが現状です
【2014年03月07日】
XP から Windows7 への移行がいずれ余儀なくされます。今、実際に移行作業中なのですが、元々は10年前に作成していたので、ここに書いて無い事以外にも注意事項がたくさんあります( 極端なのは document.all だったり、css の単位無し定義だったり )
しかし、IE11 はなにもしなければ、VBScript が動かなくなるので、Excel と連携するようなアプリが壊滅してしまいます。その際のテコ入れ時に知っておいたほうが幸せになれる内容です。 まず、以下のコードは JavaScript が IE のデフォルトのスクリプトなので、IE8 でもエラーになります。
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css">

</head>
<body>
<input type="button" value="実行" onclick='call alert("OK")'>
</body>
</html>

これは基本的な事ではありますが、IE のデフォルトのスクリプトを変更する方法がある事を知る為の事実の前振りでもあります。

最初は、この INPUT だけを IE11 でVBSCript 扱いするには以下のように記述します。
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css">

</head>
<body>
<input type="button" value="実行" onclick='call alert("OK")' language="VBScript">
</body>
</html>

これは通常の Microsoft のドキュメントでも書かれていますが、これではデフォルトにはなりません。そこで、以下のようにして VBScript を IE のデフォルトスクリプトに変更します
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8">
<script language="VBScript"></script>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css">

</head>
<body>
<input type="button" value="実行" onclick='call alert("OK")'>
<input type="button" value="実行" onclick='alert("OK");'>
</body>
</html>

※ 11 行目はセミコロンがあるのでエラーになります


つまり、ページの最初に認識されるスクリプト要素が VBScript であれば、デフォルトが VBScript に変更されます。但し、X-UA-Compatible と両方書く場合は、X-UA-Compatible のほうが先でなければなりません。以下のコードは、IE8 のドキュメントモードに変更されずに、IE11 となり、そもそも VBScript が動作しません。
<html>
<head>
<script language="VBScript"></script>
<meta http-equiv="X-UA-Compatible" content="IE=8">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css">

</head>
<body>
<input type="button" value="実行" onclick='call alert("OK")'>
<input type="button" value="実行" onclick='alert("OK");'>
</body>
</html>



META 要素による、X-UA-Compatible の設定は、それより前に IE の判断の邪魔になるようなものがあると、設定しない動作になるので、X-UA-Compatible はできるだけ先頭にする必要があります。これは、VBScript 以外の対応においてもきちんと対応すべき重要な仕様です。

※ これに関して、Microsoft の開発者ツール(F12)のドキュメントに説明があります
【HTML1115】
一般に、"META" タグが "Script" または "Style" 宣言の後に置かれ、それによりページのドキュメント モードが修正されたことを表します。

X-UA-Compatible META タグをヘッダー内のできるだけ前の位置に移動します。"<title>" と charset の値の直後に配置することをお勧めします。
さらに、Quirks モード( 互換モード / IE6 の時代の過去の互換なので、正確には IE5 ) は、IE5 と指定すると設定されるようです。
<meta http-equiv="X-UA-Compatible" content="IE=5">

『互換表示設定』について



IEの、右上の歯車アイコンで開くメニューの中に、『互換表示設定』という項目がありますが、これは意図的にある条件にあてはまるページを IE8 より前のIE 互換で表示するものですが、その条件が大きく分けて2通りあります。

1) 登録したサイト
2) イントラネット

これによって自動的に古い IE とコンパチブルになるようになっていて、しかもこれで運用したほうがサーバーに渡されるユーザーエージェント文字が完全であるという事を最近確かめました。

そして、HTML の書かれ方によって、コンパチブルになるIE のバージョンが2段階になる事も今回確認しました。
( 他のパターンは未確認です )

1) <!DOCTYPE html> が書かれていると IE7 互換になる
2) 何も無い <html> 始まりだと、IE5(Quirks モード) 互換になる

いずれにしても、VBScript は昔どおり動作しますので、イントラネットで運用されていた旧システムは何もしなくてもほぼ動く事になっています。( 一年前は違ったはずですが・・・ )

関連する記事

IE11 でVBScript が動作しないので、x-ua-compatible を使用して Excel(Excel.Application) の処理を検証




posted by lightbox at 2017-03-16 15:23 | IE | このブログの読者になる | 更新情報をチェックする

2016年12月24日


いまさらですが、IE9 を含むそれ以前の URL の QueryString の解釈のバグ

なんと無くは知っていたのですが、そうそう遭遇するものでも無く、忘れていました。

まず、ソース上はこうなっています。間違い無く
<img src="img.php?bc=&gt=">
しかし、IE9 にエミュレーションして、開発者ツールで見るとこうなっています
<img src="img.php?bc=>=">
つまり、&gt= が > になってしまっています。本来、セミコロンがあればまだ可能性がありますが、それでも URL 上ではバグです。

結局、一つ前の bc の内容が本来空なのに、>= という値が入ってしまうという凄まじさです。

▼ IE11 でテスト(2016/12/24)




posted by lightbox at 2016-12-24 14:53 | IE | このブログの読者になる | 更新情報をチェックする

2016年01月20日


IE で URL に username:password を含めて基本認証を可能にするには

更新履歴
2015-01-20 : IE11 で動作確認
2013-08-08 : IE10 で動作確認
2010-07-28 : 初回投稿


セキュリティ上の理由でサポートされなくなったのはかなり前だったので、今まで、一般的な動作だと思ってました。しかし、Firefox と Chrome で試したら、どちらでも普通に動作していました。

※ Chrome は普通に開きました。
※ Firefox はメッセージボックスで開くかどうかの確認を求められます

Microsoft の文書

Internet Explorer では Web サイト アドレス (HTTP URL および HTTPS URL) に含まれるユーザー名およびパスワードがサポートされない

HKEY_CURRENT_USER HKEY_LOCAL_MACHINE の両方でサポートされますが、HKEY_CURRENT_USER では、キーが作成されておらず、自分で作成する必要があります。この、一連の FeatureControl 下のキーは、全てアプリケーション毎への設定です。

▼ HKEY_LOCAL_MACHINE で最初からあったエントリ

(※ 大量にエントリがあります)

(参考)
別のドキュメントでは、同位置のセキュリティコントールの方法として、クリップボードに対する設定が書かれています
Internet Explorer 7 におけるクリップボードへのスクリプト アクセスの既定のセキュリティ設定の強化

username:password が必要な場合は以下を設定します。
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE]
"iexplore.exe"=dword:00000000


以下は、上記場所を開く為のスクリプトをダウンロードするリンクです

IEのFeatureControl( ユーザー毎 )




タグ:IE レア
posted by lightbox at 2016-01-20 17:34 | IE | このブログの読者になる | 更新情報をチェックする

2015年07月30日


IE11 の 互換表示機能に関するいくつかの問題

右上の歯車アイコンで開くメニューの中に、『互換表示設定』という項目がありますが、これは意図的にある条件にあてはまるページを IE7 互換で表示するものですが、その条件が大きく分けて2通りあります。

1) 登録したサイト
2) イントラネット

この 2) の条件は、IE11 が導入された当時チェックされていなかったと思います。先日久しぶりに IE11 にかかわるメンテをやっていたら、何故か IE7 互換になっていたので確認するとそうなっていました。他の PC も確認したので、これは Windows Update のどこかのタイミングで強制的にチェックが付いたと思われます。

▼ 他の方法で IE8 互換でテストしているのでチェックを外してあります


で、実はこのチェックをするかしないかで、サーバー側で受け取るユーザーエージェント文字列が違うという事実を確認しました。

X-UA-Compatible META要素 による設定



この設定は、HTML で指定する方法ですが、IE11 が IE8 コンパチブルにもかかわらず、サーバー側は IE11 扱いです。( POST しても同じ )
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="IE=8">
</head>
<body>
<form>
<input type="submit" name="send" value="送信">
</form>
<img src="server.png" style='display:block;margin-top:10px;'>
<?php
print $_SERVER["HTTP_USER_AGENT"];
?>
<hr>
<img src="client.png" style='display:block'>
<script>
document.write(window.navigator.userAgent);
</script>
</body>
</html>

▲ デモページ

最初、こういう仕様なんだろうと思ったんですが、『互換表示設定』を行うと以下のようになります。



おそらく、IE11 移行時に想定していた対応策が、Microsoft 側で足並みが取れずにかつ後フォローもできていないとしか思え無いです。

結局、これ以外の方法は全てサーバー側では IE11 扱いになります。

X-UA-Compatible ヘッダーによる設定




F12 で手動変更




関連する Microsoft ドキュメント

F12 開発者ツール コンソール エラー メッセージ
X-UA-Compatible META タグをヘッダー内のできるだけ前の位置に移動します。"title" と charset の値の直後に配置することをお勧めします。
グループ ポリシーを使った Internet Explorer 11 の互換性の管理 ドキュメント互換性の定義 下の二つのドキュメントは、F12 で開く開発者ツールの『エミュレーション』タブのドキュメントモードの項目の右にある インフォメーションアイコンで開く英文ページから辿れる内容ですが、一つは英文でしか開かないという、適当対応が現状です。
タグ:IE トラブル
posted by lightbox at 2015-07-30 13:49 | IE | このブログの読者になる | 更新情報をチェックする

2015年01月08日


IE : URLに使用可能な文字数

IE6 時代の正式ドキュメントでは、2083文字ですが、今(IE11)は相当長いようです。

ブラウザの URL の最大長

IE 以外では正確にチェックできないぐらい大きな数字である事が解りますが、今は IE11 でもそんな感じのようです。

How long an URL can Internet Explorer 9 take? - Stack Overflow

Stack Overflow のコードは、JavaScript でテストしているので正確かどうかは解りませんが、目安にはなります。
<a id="anc" href="http://google.com/">Test</a>
<script type="text/javascript">
function init() {
	var anchor = document.getElementById('anc');
	var valid = true;
	var url = 'http://google.com/?search=';
	var count = url.length;

	while(valid) {
		url = url + '1';
		anchor.href = url;
		count++;
		valid = anchor.href == url;

		if(count > 100000) {
			alert('Test reached 100,000, stopping...');
			valid = false;
		}
	}
	alert('Complete, count = ' + count);
}
init();
</script>

昔の IE9 でチェックした時は 5120 だったそうですが、現在 IE11 のエミュレーションでテストすると、IE8 以前の場合のみ 5120 になります。

昔実際にテストした時は、IE8 では 4096 でした。

このへんはエミュレーションですから適当なようです。

この結果をふまえて試してみたいのは、ブックマークレットで大きなサイズの処理が可能かどうか・・・というところですが、メンテナンス性が悪いのてあまりしないほうがいいとは思います。


タグ:制限 IE
posted by lightbox at 2015-01-08 21:05 | IE | このブログの読者になる | 更新情報をチェックする
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 終わり