いちにい さん 2001年 08月 22日 00時 53分 42秒

To: 管理人むたぐち さん

>> 密かに、C#を勉強してるんですか?
> いえ、サンプルコードがあまりにも動かないので、やる気がなくなったところです(笑)
> やっぱり、VS.NETがないとつらい…。

ですか。
しかし、その困難を乗り越えたところに、有るんです……。(何が?)
新しい、困難が…。(おい)
って話は置いといて、弄って見たいなぁ〜。
.NET。


>> 自分も、雑誌で最初見たときには、「おっ、このねぇーちゃん、すげぇなぁ!」って、
>> 思ったんですけどね。
> あれ、雑誌ですか。どうも節操がないというか。

↓のは、サイトのコンテンツです。
別の記事を見たとき、名前が女性ぽかったんですよ。


> IEのコンテキストメニューに組み込むタイプのスクリプトを書いてみました。

IE5用だったので、ガッカリ。(笑)
VBSは、バージョンアップしたんですが…。
バージョンアップしたら、エラーが出てもデバッガが起動しなくなった。
何故?


> アプリケーションを記述する複雑なプログラミング環境のほかに、
> ちゃんとスクリプトのようなおきらくごくらくプログラム環境の必要性を
> 認めています。

アプリ言語と、スクリプトの意義が異なるので、今後、スクリプトが、
機能アップされても、廃れると言ったことは、無いですよね。
より、複雑なことを出来るように機能アップすれば、お手軽さが損なわれる
と言うジレンマは、ありますが。


> 長くなりましたが(しかもまとまりが悪い)、WSHの未来像が、なんとなくつかめた
> ような気がしませんか。

すいません。
英語なので、いまいち、判ったような(むたぐちさんの解説で)
判らないような…。(笑)
世間の流れに、ただただ流される奴。いちにい。(笑)



To: 土屋 さん

> 動かなくなったPCだってとってあるし、、、

部品とって、使えるじゃあないですか。
新しいの組み立てるとか。
自分は、遣ったこと無いけど。


> と、思います。
> 私は、英語だって暗号にみえるし、、(それは話が違うか、、)

見えます。
英語が出来たら、PGの方でも、かなり有利なんですけどねぇ。
海外サイトには、スキルの高い物が転がってるし。
MSのヘルプも、肝心なところは、英語だし。
誰か、いい翻訳ソフト知りませんか?
○○ビスタってのを入れたけど、ノートにバンドルされてた、
N○Cの奴のが良かったような…。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 21日 23時 21分 43秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: ひっし さん

> 恥ずかしいのですが、土屋さんに言われてデータをディクショナリーオブジェクト
> の存在を初めて知りました。今回は時間が無く、知識も乏しいので今のまま
> 実行するのですが、今度時間があるときにディクショナリーオブジェクトを
> 使ったものを作成したいと思います。貴重な意見をありがとうございました。

Dictionaryオブジェクトって、Perlで言うところの関連配列(連想配列あるいは
ハッシュとも言う)と同等のもの、と説明されますが、そもそも連想配列って
何が便利なんだろうか。
そこらへん、ヘルプには書いてないんですよねえ。「サンプルのためのサンプル」が
あるだけ。
そこで、ちょっと考察してみることにしましょう。

私がDictionaryオブジェクトを使って便利だと思うのは、まず、重複データの
取り扱いです。
Dictionaryオブジェクトには、Existsメソッドというのがあり、これで
キーがすでにあるかないかを調べることができ、ない場合には新しく
追加する、とかが可能になります。
この手法を応用すれば、キーに要素名、値にその要素の数をカウントする
ことができます。具体例は

'文字種別文字数カウント(以前も紹介した気がする…)
Set WshShell = WScript.CreateObject("WScript.Shell")
Set dic = WScript.CreateObject("Scripting.Dictionary")

sInput = InputBox("メッセージをどうぞ")

For I=1 To Len(sInput)
ch = Mid(sInput,I,1)
If dic.Exists(ch) Then
dic.Item(ch) = dic.Item(ch) + 1
Else
dic.Add ch,1
End If
Next

For Each sKey In dic.Keys
sOut = sOut & sKey & "…" & dic.Item(sKey) & vbCrLf
Next

MsgBox sOut

Dictionaryオブジェクトの各キーが、任意の型の値を持てることを
応用したものです。
# 任意の型を取れるということは、配列だって
# 取れると言うことです。それを利用して、Dictionaryオブジェクトを
# 多次元配列もどきとして使うこともできます。

# 余談ですが、こういうとき、ソート処理もできたらいいんだがなあ、と思います。
# Perlの連想配列ならできるそうです。
# 参照: http://www.srs.ne.jp/~north/nperl/assoc.html (というか、上のスクリプトと同じものがあった)
# http://www.sol.dti.ne.jp/~imafu/Perl/roundHash.html

# 文字種の度数分布が出れば、アルファベットonlyで、文字置き換えが一対一
# 対応であるような単純な暗号解読に応用できます(^^;
# 母音がなんであるかを判断する材料にするわけです。
# ちなみに、この手の暗号でもっとも単純なのがシーザー暗号と言われるやつで、
# これは単にアルファベットを一定間隔だけずらしたものです。
# rotもシーザー暗号の一種と言えるでしょうね。
# Googleで検索すると、
# http://www.e-soshiki.com/kenkyu/reports/angou.htm
# http://www.hlla.is.tsukuba.ac.jp/~yas/ipe/shakai-kougi-1997/1997-06-06/
# http://www.hannan-u.ac.jp/~nozawa/soturon/nishimoto-s/nishimoto.htm
# 等のページを見つけました。文字の暗号化の基本を学べます。

Dictionaryオブジェクトの、VBSの配列にはない長所として、変数のサイズを指定
しなくても良い、という点があります。
すなわち、Addメソッドを使えば要素を1追加できるし、Removeメソッドを使えば
要素を1削ることができ、その際Dictionaryオブジェクトのサイズを再指定する
必要はありません。(だからCountプロパティはReadOnlyなのです)

一次元配列に限って言えば、VBSでもArray関数あるいはSplit関数を使えば、
変数のサイズを指定せずに一次元配列を作ることができますが、通常は
Dimで宣言してやる必要があります。
また、変数のサイズをコード中で変化させるには、ReDimステートメントを
使ってやらないといけません。
JSなら、配列はArrayオブジェクトに対応するのですが、このオブジェクトには
sliceメソッド(配列の一部を切り出す)、concatメソッド(配列同士を連結)、
pushメソッド(配列に新しい要素を追加)等のメソッドがあり、配列のサイズを
明示的に指定しなおす必要がなく、便利です。
# sortメソッドもありますし。
そういうVBSの配列の機能の貧弱さを補うという意味では、Dictionaryオブジェクトを
使う価値はあると思います。

ただ、そういう使い方をする際にネックとなるのが、Dictionaryオブジェクト
というか連想配列はインデックスを文字列で取る、という点です。
すなわち、数字がインデックスではないので、For I=0 To dic.Count-1のような
ループをまわすことができません。これはPerlでも同様。

# ちなみに、Shell32クラスのFolderItemsコレクションでは、文字列と数字の
# 両方のインデックスを使ってアクセスできます。
# (27-17 管理人むたぐち 2000-12-26 14:47 参照)
# 以下、検証用スクリプト。結果が一致しないのは、隠しファイルをカウント
# するか否かの仕様の違いによる。

'-----FileSystemObjectを使う場合-----
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set oFolder1 = Fs.GetFolder("C:\")
Set oFiles1 = oFolder1.Files

'For...Each...Nextによる全値の取り出し
For Each oFile1 In oFiles1
s=s & oFile1.Name & vbCrLf
Next
MsgBox s,,"FileSystemObject - For...Each...Next"
s=""

'数字インデックスによるアクセス(不可)

'文字列インデックスによるアクセス
MsgBox oFiles1.Item("command.com").Path

'-----Shell32を使う場合-----
Set Shell = WScript.CreateObject("Shell.Application")
Set oFolder2 = Shell.Namespace("C:\")
Set oFiles2 = oFolder2.Items

'For...Each...Nextによる全値の取り出し
For Each oFile2 In oFiles2
s=s & oFile2.Name & vbCrLf
Next
MsgBox s,,"Shell32 - For...Each...Next"
s=""

'数字インデックスによるアクセス
For I = 0 To oFiles2.Count - 1
s=s & oFiles2.Item(I).Name & vbCrLf
Next
MsgBox s,,"Shell32 - For...Next"
s=""

'文字列インデックスによるアクセス
MsgBox oFiles2.Item("command.com").Path

# これを見ると、Shell32のファイル操作はなかなかフレキシブルに
# 記述できることがわかります。以上、配列や連想配列ではなくコレクションの話ですが、
# まあ関連事項ということで。

というわけで、以上の使い方が本当に連想配列の正しい使い方かどうかは
甚だ疑わしいところではありますが、とりあえず便利に使う方法を紹介してみました。



To: 土屋 さん

> これは私だってまけないぞぉ。(笑)
> 動かなくなったPCだってとってあるし、、、

私なんかクラッシュしたHDDを後生大事に持っているぞ。
(何に使うねん)

> ふっふっふっ。実はできるんですよ。
> ENCボタンを押して新規作成ボタンを押すと、名前を聞いてきますので、
> 適当なダブらない名前を書いてクリックします。
> そうするとデータのないファイルができてそのファイルが選択された状態になってます。
> そこにいろいろ書き込んで(実はビューアにいろいろ書き込めるようになっている)、
> 保存ボタンを押すと暗号化されて保存されます。

えー、できませんよ?
この手順どおりやったんですが、平文のまま保存されてしまいます。
それを再度開こうとすると、「清く正しい暗号文ではありません」と出ます(^^;

> ところで、C#というのは、訴訟に負けてJAVA開発ツールを作れなくなってしまった某社が、
> その代わりにするための戦略ツールなのでは、と聞いたことがありますが、そうなんですか?

それはよく聞きますね。
たぶんそうなんでしょう。

VBの簡便さとC++のパワフルさを併せ持つ、.NET Frameworkを司る新しい言語が欲しい。
それに一番近いのがJAVAだが、アレを持ってくるわけにはいかないし、
勝手に拡張もできない。
なら新しいの作っちまおう。というかいいとこだけパクっちゃえ。
というのが真相では。

C#で記述できないところにはC++.NETがありますし、VB.NETなんていうのは
VBユーザーの数が無視できないから仕方なく残したというところでしょう。
とはいえ、CRLに準拠するため、VBから大幅な仕様変更がされていますね。
VB使いの方は、新しくVB.NETを習得するくらいなら、C#を習得した方が
賢いのかもしれません。

ここで私として考えておかなきゃいけないのが、.NET時代におけるWSHの役割です。
COMの申し子WSHは、.NET時代にその居場所を確保できるのかどうか。
私の希望的観測では、これまでどおりそのマイナーな位置を保ったまま(…)、消えずに
残ってくれるんじゃないかと思っています。
というのも、CRLはスクリプトのような「おきらくごくらくプログラミング」とは
程遠いからです。
いくらテキストエディタで記述できるとはいえ、書いたプログラムはコンパイルしないと
動かないし、やっぱり専用開発ツールがないとつらい。

とはいえVBScriptは今後VB.NETに共通化されるし、JSもJS.NETになる。
参考: http://www.asia.microsoft.com/japan/developer/workshop/languages/clinic/scripting07142000.asp
では、WSHの記述言語としても、VB.NETやJS.NETが使われるのだろうか。
そもそもWSHはWSHとして残るのだろうか。
気になったので、Webとネットニュースをちょっと調べてみました。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnclinic/html/scripting01162001.asp
によると、Windows ScriptとVBAが統合してVisual Studio for Applications(VSA)に
なるようなことが書かれています。

一応、
> However, compatibility is a major concern for us, and you will still be able to host the existing VBScript engine as well as the Visual Basic Script engine to allow your existing script code to continue running just as it does today.
とあるので、既存の文法のVBSでも、VB.NETで動くようになるとは思います。

しかし、VSAは本当におきらくごくらくプログラミング環境なんでしょうか。
.NET時代にWSH的スクリプトホストは残るのでしょうか。

このドキュメントを受け、microsoft.public.scripting.wshで今年の2月、
"Re: What will happen to the WSH in .NET ?"というSubjectで次のような
記事が投稿されました。
Ian Morrishさんの<OG68CTCoAHA.1092@tkmsftngp03>から
> Then imagine how a host (like WSH) could be called WSH.Net
> Just as there is an option now for Script Binary (FAST) or Script Control
> (easy) integration, WSH.Net may use a more direct method than Visual Studio
> for Applications.
> This is of course total speculation...
# この方、http://communities.msn.com/windowsscript の管理者ですが、たぶんMSの人
# じゃないです。
VSAだけでなくWSH.NETが登場する、といいなあって感じでしょうね。

microsoft.public.scripting.wshで去年の10月に"WSH's Future"というSubjectで
WSHの将来がどうなるか、についてのスレッドがたっていました。
その中で興味深い記事をピックアップしておきます。
# Peter Torr氏はMicrosoft Script Technology グループのプログラムマネージャの一人で、
# Scripting Clinicを連載しているAndrew Clinick氏の同僚です。

Peter Torr \(MS\)さんの<#2ZMNV7LAHA.249@cppssbbsa05>から
> > Will the command line compilers continue to be provided with the framework
> > when finally released?
>
> Hi,
>
> As far as I know, yes, but don't take that as gospel ;-).
>
> > If so, and given that the platform will run (eventually) on clients as
> well
> > as servers, aren't WSH's days numbered? Surely in this scenario we will
> > just be writing managed code instead of script?
>
> We are working to get WSH working with the .NET platform and languages, but
> we probably won't be shipping anything in the first version of .NET.
> Although you can use .NET to write command-line EXEs using JScript.NET and
> VBScript.NET at the moment, there are still advantages to using WSH as the
> host, and we hope to make this work well in the future.

.NETの最初のバージョンでは、.NETに対応したWSHは出ないかも知れないとの
ことですが、逆に言うと予定はあるということですね(^^;
WSHをC#で記述できる日もくるかもしれない。
とりあえず今は、コマンドラインでVB.NETやJS.NETを使ってコンパイルしてくれとの
ことです。

Peter Torr \(MS\)さんの<#pQPM$WMAHA.223@cppssbbsa02.microsoft.com>から
> > VBScript.NET ? I thought VBScript was going to be assimilated in VB.NET?
>
> The langage is all Visual Basic .NET, but there are different ways to
> compile / run the code, such as stand-alone EXEs or as "scripts" inside WSH,
> IE, etc. (although only stand-alone EXEs are supported at the moment).

まだ実装されてはいないが、VB.NETをコンパイルなしでスクリプトとして動かす
環境が用意されるようですね。

Peter Torr \(MS\)さんの<#ttCP9iMAHA.276@cppssbbsa05>から
> > What about VB(Script).Net and JScript.DLLs will IE remain un-compiled code
> > only? I'm not asking because Im trying to protect my code from the evil
> > scourge of view-source ;) but I was wondering if some intensive client
> side
> > effects (such as scrolling or some other fancy stuff) might experience a
> > performance gain.
>
> Hi,
>
> We really don't have anything to announce at this stage, I'm afraid. Sorry!
>
> If you have any ideas (other than the obvious "enable .NET langauges in IE"
> <g>) about this, or anything else script-related, please post them to the
> JScript.NET / general newsgroup, or send mail to msscript@microsoft.com.

Peter Torr \(MS\)さんの<OHD9UEXMAHA.251@cppssbbsa05>から
> Think about what makes WSH good today -- rapid development, no compilation,
> easy deployment, convenient packaging, simple object model -- and some great
> new features we have coming in future releases, and then just imagine doing
> all that, but with VB.NET, JScript.NET, and others.
>
> Who wants to write a full-blown C# / VB / JScript / etc, application,
> compile it, bla bla bla, just to map a network drive during logon?
>
> Nobody!
>
> You just want to hack three lines of script into Notepad, copy it to the
> server, and you're done.
>
> ...at least, I hope that's what you want to do... ;-)

Peter Torr \(MS\)さんの<eD2S1tgMAHA.302@cppssbbsa04>から
> > I don't want typed variables, and I don't want large-scale object
> > orientation. But I *do* want JScript to have ByRef variables, simpler
> > access to enumerations (for .. in rather than new Enumeration()),
> > better support for default values (rsEmployee("NAME").Value is a pain,
> > rs!NAME would be much nicer...)
>
> Hi,
>
> Hopefully you are aware that we have all those things, except the better
> support for default values, which is something .NET is trying to move away
> from. We are certainly trying to maintain the "script" feel of JScript,
> whilst still enabling the "programming in the large" scenarios you talk
> about (sounds like something the ECMA standard would say... ;-) ).

以上の記事を読む限り、アプリケーションを記述する複雑なプログラミング環境のほかに、
ちゃんとスクリプトのようなおきらくごくらくプログラム環境の必要性を
認めています。
こういう認識が開発者サイドにある限り、未来は明るいでしょう。

# CLRってデフォルトプロパティをサポートしないのね(^^;

長くなりましたが(しかもまとまりが悪い)、WSHの未来像が、なんとなくつかめた
ような気がしませんか。


イチロー さん 2001年 08月 21日 11時 48分 57秒

To:あんのうんさん
現在、いろいろ試しています。
ありがとうございました。

土屋 さん 2001年 08月 20日 20時 33分 06秒

To: コブラ さん
> コピー先はダイアログで指定させるのですが、
> コピー元(つまり*.vbsファイルのある場所)が判断つきません。

Set FS = CreateObject("Scripting.FileSystemObject")
FolderName = FS.GetParentFolderName(WScript.ScriptFullName)
MsgBox FolderName
でどうでしょう。

コブラ さん (c475@systex.co.jp) 2001年 08月 20日 18時 27分 36秒

初めてで失礼します。
 現在VBSでAccessプログラムのセットアップ(幾つかファイルをコピーするだけ)プログラムを作成しようと考えているのですが、分からないことがあります。
コピー先はダイアログで指定させるのですが、コピー元(つまり*.vbsファイルのある場所)が判断つきません。
どうしたら宜しいでしょうか?
分かる方教えてください。

ごんざれす田中 さん 2001年 08月 20日 12時 50分 23秒

TO: 土屋 さん
>最近私がワをかけていますね。ひらにご容赦を。

とりあえず、理解できるように、がんばって、みますよ。(^^)/~~

TO: 管理人むたぐち さん

>その勢いでWindows2000.FAQも見ると、Win2000での方法が載っています。
>具体的にはWMIのWin32_OperatingSystemクラスのWin32Shutdownメソッドを使ってやります

えぇ、見つかりました。即D/Lしました。
ど〜も。ありがとうございました。


土屋 さん 2001年 08月 20日 12時 15分 08秒

To: いちにい さん

> 家なんか、詰まらないものだらけです。(笑)
> しかも、その詰まらない物を後生大事に、とってあるし。(貧乏性)

これは私だってまけないぞぉ。(笑)
動かなくなったPCだってとってあるし、、、

> じゃあ、大丈夫じゃあないですかぁ。
> その前の、MD5でも、問題があるって言ってましたが、それも、素人レベルの
> 問題じゃあないんですよね?

と、思います。
私は、英語だって暗号にみえるし、、(それは話が違うか、、)


To: むたぐち さん

> それでは、このソフトだけで一から暗号ファイルを作る方法がない気がしますが…。
> 何とかしてください(^^;

ふっふっふっ。実はできるんですよ。
ENCボタンを押して新規作成ボタンを押すと、名前を聞いてきますので、
適当なダブらない名前を書いてクリックします。
そうするとデータのないファイルができてそのファイルが選択された状態になってます。
そこにいろいろ書き込んで(実はビューアにいろいろ書き込めるようになっている)、
保存ボタンを押すと暗号化されて保存されます。

も一回書き直そうとするときは、ファイル一覧でクリックすると、平文になおってかきこみ可になります。
(編集ボタンというのは、メモ帳で編集するためなのです。変な仕様・・・)

発想が常人と違うことがばれてしまいますね。(覚えてしまえばちょっと不便なだけですので)
なんとか、普通に近づけるよう努力してまいります。m(_@_)m


ところで、C#というのは、訴訟に負けてJAVA開発ツールを作れなくなってしまった某社が、
その代わりにするための戦略ツールなのでは、と聞いたことがありますが、そうなんですか?


To: ひっし さん

ディクショナリーオブジェクトは、使い道があんまりわからないので、こだわらなくてもいいと思いますが、
エクセルを立ち上げたり閉じたりを繰り返す作業は、できれば避けた方がいいと思います。
(某社の製品は、閉じたときに本当にメモリをすべて解放しているのか不安になるときがあるもので、、、)


To: ごんざれす田中 さん

> まだまだ、わからないことだらけです。この掲示板の半分以上理解できないです。

最近私がワをかけていますね。ひらにご容赦を。

ひっし さん 2001年 08月 20日 11時 10分 26秒

To: 管理人さん
 返事が遅れて申し訳ありませんでした。

>私の場合、ファイル操作が絡むスクリプトでは、極力ログを取るようにしています。
>1.元のファイル → リネーム後のファイル
>2.元のファイル → コピー後のファイル
>3.元のファイル → 削除
>(移動の場合は2と3を併記。リネームも2と3で表現できると言えばできますけどね)
>のような形式にしています。

上手くいかなかったとき、処理するごとにMsgboxで変数の値を表示するように
していたのですが、表示ではちゃんと表示されているのにエラーになってしまい
戸惑っていました。いつも、スクリプトがうまく動かないときはエラー処理を
外して、エラーが起こった行番号を確認するのと処理する事に変数を表示したりしています。
まだまだ、未熟ですがこれからも宜しくお願いします。


To:土屋さん

すぐに返事を下さりありがとうございました。

>これはサブフォルダがすべて****1234*みたいな形式になっていることが前提となっているんですよね。
>If IsNumeric(rt) Then
>あたりでチェックしておかないと、いけないのでは?

変数が数値か調べるのですね。早速組んでみたのですが、エラーの方は収まった
みたいです。ありがとうございました。本当は、スクリプトを組む時点で入れて
おかなければいけなかったのですが・・・まだまだ未熟です(^^;。


>それと、エクセルファイルはFor〜Nextの外に置いておいて、
>ループのたびにいちいち開いたり閉じたりしなくてもいいのでは。
>または、いっかいエクセルを起動したらあとはデータをディクショナリーオ>ブジェクトに入れてしまうと、処理が速くて簡単になりそうな気も、、、

恥ずかしいのですが、土屋さんに言われてデータをディクショナリーオブジェクト
の存在を初めて知りました。今回は時間が無く、知識も乏しいので今のまま
実行するのですが、今度時間があるときにディクショナリーオブジェクトを
使ったものを作成したいと思います。貴重な意見をありがとうございました。
これからもスクリプトを頑張っていきたいと思います。




管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 19日 23時 42分 54秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

IEのコンテキストメニューに組み込むタイプのスクリプトを書いてみました。
IriaについているHTMLを参考にしたんですが(^^;

この手のスクリプトって、すでにありそうな気もしますが、複数行に一気にリンクを
張れて、しかもURLを正しく変換する機能がついているものはないと思います。
なお、全角→半角の変換機能は、kiaさんのページにあるドキュメントを参考に
させていただきました。というか、JSをVBSに直しただけでそのままなんですが(^^;


To: 土屋 さん

> ぢつは、VBSの下のENCというのが暗号モードになっておりまして、
> 拡張子ENCのテキストファイルを暗号文と勝手に解釈して、
> 読み込むときにデコードして、保存するときにエンコードするのでありました。
> (そういえば、そんなこと何も説明されてないですね)
> 保存ボタンを押すと、暗号文に変換して保存します。
> それをもう一度平文にしたい時は、ファイル名をクリックします。

それでは、このソフトだけで一から暗号ファイルを作る方法がない気がしますが…。
何とかしてください(^^;

> ActiveXを使わなかったのは、それ用のCLSファイルをプロジェクトに読み込んで使えるものだろうか、と試したらうまくいってしまったので、こりゃ手間が省けるわい、とそのままにしてしまっているものです。

ActiveXのメリットというか存在意義を考えてやれば、やっぱりexeからも
呼び出してやった方がいいような気もします。

> 話は唐突に変わりますが、WSHでエクセルのワークシート関数を使うサンプルです。
> 度数分布を司る配列関数FREQUENCYをちょっと使ってみました。

ありがとうございます。
ワークシート関数って、メソッドとしては実装されていないんでしょうか。


To: いちにい さん

> 家は、こんな感じです。
> コメントと、数値、"文字列"、の色を変更してます。
> /* */は、殺して有ります。(INIファイルなので、コメントアウトできます。)

というわけで、みなさんもお好みの配色でどうぞ。

> えー。
> 消しちゃいました。
> シェアだし。(笑)

え、そんなあ。

> 何か、コードを見てると、VBと、Javaを足して2で割ったような感じです。(笑)

まさにそうですね。

> 密かに、C#を勉強してるんですか?
> カキコを見た感じ、理解が得られて、面白くなってきたって所でしょうか?

いえ、サンプルコードがあまりにも動かないので、やる気がなくなったところです(笑)
やっぱり、VS.NETがないとつらい…。

> 自分も、雑誌で最初見たときには、「おっ、このねぇーちゃん、すげぇなぁ!」って、
> 思ったんですけどね。

あれ、雑誌ですか。どうも節操がないというか。

いちにい さん 2001年 08月 19日 13時 20分 43秒

To: 管理人むたぐち さん

> Script Builder用vbs.cfgオリジナル忠実バージョンを作ってみました。

家は、こんな感じです。
コメントと、数値、"文字列"、の色を変更してます。
/* */は、殺して有ります。(INIファイルなので、コメントアウトできます。)

↓このコードを貼り付ければ、どう言った配色になるかすぐ解ります。(笑)
' コメント
If s=10 Or j=20 Then
  MsgBox "文字列"
End If


[Setting]
Quotation="
Commenter='
HexPrefix=&H

[Bracket]
;Count=2
;Left1=/*@
;Right1=*/
;Color1=clTeal
;Left2=/*
;Right2=*/
;Color2=clTeal

[Color]
Ank=clWindowText
DBCS=clRed
Comment=8421631
Int=clGray
Url=clNavy
Reserve=clBlue
Str=49152
Symbol=clNavy
ReserveBold=0
;clGreen
;clPurple
;clFuchsia (明るい紫紅色)
;clLime

[WordWrap]
HorzScrollBar=1
WordWrap=0
WrapByte=70
FollowPunctuation=0
FollowRetMark=0
Leading=0
WordBreak=0


> 拡張DLLが公開されているようですが、これを適用しても同じなんでしょうか。
> # って、また自分で調べない悪い癖が。

えー。
消しちゃいました。
シェアだし。(笑)


> I Love Youのコードは私も見たことがあるんですが、あれはどう見ても素人が
> みようみまねで作ったスクリプトですよ(^^;
> 逆に言うと、素人でも十分強力なワームを作ることができるってことです。

よく見てないんですが、解説によると、バグがあって、
使ってない関数もあったようです。(将来用? 爆)


> .NET(とC#)に関する話題は、ONOさんのページが充実してます。
> http://www.corebase.co.jp/shu/
> 「気になるURL」要チェックですね。

面白いですね。
たったあれだけで、Winアプリが出来るとは。
何か、コードを見てると、VBと、Javaを足して2で割ったような感じです。(笑)
密かに、C#を勉強してるんですか?
カキコを見た感じ、理解が得られて、面白くなってきたって所でしょうか?

> 120MBもありますが、こういうときブロードバンドの快適さを堪能できますね。
> ものの数分で落ちてきましたよ。

羨ましいぞ。(笑)
早さもともかく、120MBも入れる空間があって。(爆死)



To: 土屋 さん

> 思うに、SHA-1の性格上、たとえ暗号文が解読されようとも、パスワードは絶対ばれないであろ
> うという、意味のない自身はあるのですが、、、

そうですか。
じゃあ、大丈夫じゃあないですかぁ。
その前の、MD5でも、問題があるって言ってましたが、それも、素人レベルの
問題じゃあないんですよね?


> なんとか総当りに持ち込んでもらうだけのパスワードが欲しいところですね。
> それも、覚えきれなくてメモしてしまうようなものだとまた危険ですが、、、

パスワードよりも、パスフレーズの方が、良いですよね。
自分だけが解る、意味の通じる文章なら覚えやすいし。


> (斬鉄剣を使ったあとの五右衛門の心境だなあ。「またつまらないものを作ってしまった」)

家なんか、詰まらないものだらけです。(笑)
しかも、その詰まらない物を後生大事に、とってあるし。(貧乏性)


>> しかも、ソフトハウスの社長。(爆)
> しかも女性だったりしません?

残念ながら、男です。
自分も、雑誌で最初見たときには、「おっ、このねぇーちゃん、すげぇなぁ!」って、
思ったんですけどね。
UG系の記事などを書いてる(今はどうだろ?)、その筋では、
ちょっとした有名人です。
マニアックなツールを販売してます。



土屋 さん 2001年 08月 18日 20時 58分 39秒

To: むたぐち さん

>> ちなみに、この前のActiveXと同じロジックを使って簡単な暗号文エディタを作ってみましたが、
>> これにはもともとパスワードがしくまれていて、作ったエディタでしか読み書きできないようになってますが、

> うーん。使い方がわかんない…。「実行」ボタンがグレーアウトしてるんですが…。

PrivateEditorは、テキストビューアの練習用に作ったものに、WSHを実行できるようにしたものなので、
右上の方のVBSを選択すると、該当のVBSファイルが「実行」できることになっております。
(そういえば、暗号と何も関係ないですね。)

ぢつは、VBSの下のENCというのが暗号モードになっておりまして、
拡張子ENCのテキストファイルを暗号文と勝手に解釈して、
読み込むときにデコードして、保存するときにエンコードするのでありました。
(そういえば、そんなこと何も説明されてないですね)
保存ボタンを押すと、暗号文に変換して保存します。
それをもう一度平文にしたい時は、ファイル名をクリックします。

もう一つ、AMIファイルというのがありますが、
これは、WZエディタやTeraPadなどでVBSの実行ファイルじゃないけど色分けしたいものがある場合に使っています。
VBのコードを書いているけど、テキストファイルを全部色分けにするのはなんだし、、、
というときに、とりあえず、AMIファイルにしてストックしているのです。
アイコンとは関係ないのですが、、、

ということで、私の予想をはるかに越えて、なんと個人的なプログラムなんだろう。(ちゃんと説明をつけるようにしますね)

ActiveXを使わなかったのは、それ用のCLSファイルをプロジェクトに読み込んで使えるものだろうか、と試したらうまくいってしまったので、こりゃ手間が省けるわい、とそのままにしてしまっているものです。

ActiveXは、個人的に私が管理しているサーバーのASPで使ってしまおうと考えているもので、それはそれなりに使い道があるのですよ、、
(今XMLのデータ部分だけを暗号化して送り出すスクリプトを考えているのです)

> # 土屋さんのページにリンクを張らせていただきました。

ありがとうございます。
サーバー移動ついでに大部分のコンテンツを削ったままでして、、、(^^;;;;
そのうち、いよいよ本業(?)に一番近い歴史物を復活させようかなあぁぁぁ。。。..


話は唐突に変わりますが、WSHでエクセルのワークシート関数を使うサンプルです。
度数分布を司る配列関数FREQUENCYをちょっと使ってみました。

DATA = Array(2,1,1,1,2,3,4,5,4,2,5,6,7,8,5,4,9)
KUKAN = Array(1,4,5,6,7,8)
KUKANSU = UBound(KUKAN)

Set XL = CreateObject("Excel.Application")
A = XL.Application.WorksheetFunction.FREQUENCY(DATA,KUKAN)
Set XL = Nothing

For i = 1 To UBound(A)-1
B = B & KUKAN(i-1) & "以下は:" & A(i,1) & vbCrLf
Next
B = B & KUKAN(KUKANSU) & "を超えるものは:" & A(KUKANSU,1)
Erase DATA
MsgBox B

で、配列DATAの中で、配列KUKANを元にして度数分布を出したりします。
範囲を使うのはだめですが、他にも便利な関数があるかもしれません。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 18日 18時 32分 03秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

○ .NET Framework SDK beta2体験記

.NET Framework SDK beta2 日本語版をインストールしてみました。
http://www.microsoft.com/japan/developer/net/dotnetsdkdown.asp

120MBもありますが、こういうときブロードバンドの快適さを堪能できますね。
ものの数分で落ちてきましたよ。
インストールはMicrosoft Data Access Components 2.7を追加インストール
することと、古い.NET Framework SDKをアンインストールしておくこと
を注意しておけばとくに問題なく完了します。
(Win9xやMEにはインストールできません。あしからず)

beta2の目玉は、なんと言っても「再配布パッケージ」の公開でしょう。
これを使えば、非.NETな環境で.NETアプリを動くようにするパッケージを
作ることができます。
ただし、アプリの配布にはhttp://beta.visualstudio.net/ でちょっとした
登録をする必要があります。(たぶん無料)

以下、触ってみた感想。
とりあえず、Document ExplorerのメニューがXPライクで感動しました。
(って感動する場所が違う)
ちょっとC#の勉強でもしてみようかと思って、Webにあったサンプルを打ち込んで
みたりしたんですが、どうもusing System.WinForms;がエラーになるなあと
思ったら、いつのまにかSystem.Windows.Formsという名前空間に変わって
いたんですね。まだまだ仕様変更がありうる、ということです。
beta1対応のサンプルをbeta2の開発環境でコンパイルしてもたいてい失敗します(^^;
しかし、SDKのインストールフォルダって、binとかincludeとかlibとかあって、
まるでUNIXみたいだなあ。

コンパイラを実行するのに、いちいちコマンドプロンプトを立ち上げるのもめんどうなので、
ソースファイルの右クリックメニューに組み込んでやろうと考えたのですが、
/out:オプションを指定しないとルートディレクトリにexeができてしまうので
駄目ですね。
/out:オプションをうまく指定するにはやっぱりWSHの力を借りる必要がありそうです。

cscをはじめとするコンパイラのオプションで、/t:winexeというのがありますが、
これを指定するとGUIアプリ(Windows.Formsを使うやつ)でコマンド窓が表示されなく
なります。また、/win32icon:でアイコンも指定できるみたいです。
# 他にもいろいろオプションがありますが、難しくてよくわからないです(^^;
これで件の配布パッケージを使ってパッケージ化すれば、VS等のアプリがなくても、
タダで見た目的にWin32アプリらしいアプリを作ることができますね。
問題は非.NET環境で、どれくらいの実行速度が出るかですね。

なお、Visual Studio.NETの方はMSDNユニバーサル会員じゃないと手に入れられません。
.NETのプログラミングって、やっぱりVS.NETがないと大変なんでしょうね。
テキストエディタで一から書くというのにも限度があるように思います。
また、http://www.asia.microsoft.com/japan/developer/workshop/languages/clinic/scripting11132000.asp
によると、VS.NETでは*.wsfファイルをそのまま編集可能になるらしいです。要チェックですね。
(つまり、WSH最強エディタになる可能性があるわけです)

# そういえばShbath MPG123改悪バージョンはC++.NETで作られてますね。


To: ごんざれす田中 さん

> Windows98.FAQ - ウィンドウズ処方箋で、
>
> RUNDLL USER.EXE,ExitWindowsExec
>  Windows9x を高速再起動させることができます。
>  Windows Me はリアルモードが削除されたため、この手法は使えません。
>  Windows NT/2000 はそもそも DOS と関係ないので、この手法は使えません。

その勢いでWindows2000.FAQも見ると、Win2000での方法が載っています。
具体的にはWMIのWin32_OperatingSystemクラスのWin32Shutdownメソッドを使ってやります。


To: 土屋 さん

> Do Until 夜
>  クーラーと扇風機はお友達
>  冷蔵庫をあけて何か探す
>  パソコンでメールチェック
>  ゴロゴロ
> Loop
> WScript.Sleep ∞

って、永眠しちゃいやん。

Do While 生きている間
For I=1 To 365
For I=1 To 24
For I=1 To 60
For I=1 To 60
For I=1 To 10
大事に生きよう
Next
Next
Next
Next
Next
Loop

> なんとか総当りに持ち込んでもらうだけのパスワードが欲しいところですね。
> それも、覚えきれなくてメモしてしまうようなものだとまた危険ですが、、、

破られにくく忘れにくい、実用的なパスワードは、ある英文を考えて、
その各単語の頭文字をつなげて作るのが一番いいようですね。
I love script but don't love I Love You script.
というような英文(なんちゅう文や)があったら、IlsbdlILYsというパスワードが作れるわけです。

あとは数字や記号をトッピングして、大文字小文字を適当に入れ替えれば完璧。

日本語の単語を使うというのもある程度は有効だと思います。
その手のクラッキングツールに、日本語辞書まではさすがに入っていないでしょうから。
パスワード長も必然的に長くなってより強固なパスワードに。
みかか変換のテクニックも併用すれば、日本人に対してもばれにくいパスワードに
なるでしょう。って、そこまでやることもないでしょうが。

もっと未来には、指紋・掌紋・網膜照合が普及するかもしれませんが、
それらのデータベース管理は慎重にやらないと、これまたえらいことになりますね。

> ちなみに、この前のActiveXと同じロジックを使って簡単な暗号文エディタを作ってみましたが、
> これにはもともとパスワードがしくまれていて、作ったエディタでしか読み書きできないようになってますが、

うーん。使い方がわかんない…。「実行」ボタンがグレーアウトしてるんですが…。

> の016です。015のActiveXは使用しない仕様です。

ActiveXの存在意義があ(笑)

> (斬鉄剣を使ったあとの五右衛門の心境だなあ。「またつまらないものを作ってしまった」)
>
> ちなみに、本家五右衛門が最初に斬った「つまらないもの」とは大根なんですよね。

逆に斬れないものはこんにゃくでしたっけ。

> 新しいもののコピーだったら、Xcopyを使うのがひょっとしたら最速では、
> と思ったりしているのですが、なかなか試す機会(&意欲)がなくて。。。

私もXcopyをスクリプトから使うことがあります。
あれはなかなか速いし、意外と高機能なので重宝します。
ファイル一つ一つについてチェックする必要がある場合は、スクリプトで再帰処理
するしかありませんが、日付やアーカイブ属性による上書きの制御くらいなら
Xcopyで十分対応できますので。

スピードに関しては、また調査してみないといけませんね(^^;

# 土屋さんのページにリンクを張らせていただきました。

ごんざれす田中 さん 2001年 08月 18日 13時 10分 47秒

調べた結果です。
Windows98.FAQ - ウィンドウズ処方箋で、

RUNDLL USER.EXE,ExitWindowsExec
 Windows9x を高速再起動させることができます。
 Windows Me はリアルモードが削除されたため、この手法は使えません。
 Windows NT/2000 はそもそも DOS と関係ないので、この手法は使えません。

Windows2000は、Dos関係ないので出来ないとの認識を致しました。
どうもすいませんでした。

土屋 さん 2001年 08月 18日 11時 06分 37秒

Do Until 夜
 クーラーと扇風機はお友達
 冷蔵庫をあけて何か探す
 パソコンでメールチェック
 ゴロゴロ
Loop
WScript.Sleep ∞


To: いちにい さん

> 今、使ってる「SHA-1」のKrack情報だけ、チェックしとけば良いかと…。

ロジック的には将来SHA-1を破る人が現れても、
解読にはまだ天文学的な予算と時間が必要かとは思います。
それに割の合わないもの(預金残高5000円の銀行口座の暗証番号や携帯電話の暗証番号、店に新しく入った子の名前とか)を暗号化しておくのがやはり基本ですね。
思うに、SHA-1の性格上、たとえ暗号文が解読されようとも、パスワードは絶対ばれないであろうという、意味のない自身はあるのですが、、、

> むしろ怖いのは、タコなパスを設定する、ユーザですよね。
> 辞書アタックしたらすぐ解るような…。(笑)
> って、知識無いのに言ってますが、どうでしょ?

まったくもってその通りですね。
とある人の使っているパスワードを調べるときは、
まずその人の卒業アルバムを調達せよ、っていう話もありますね。
名前、職場名、家族名、地名、番地、電話番号及びその組み合わせを試したら、
卒業アルバムで付き合いのあった人、電話などをチェックして、
そして辞書アタックですね。
でだめだったら、総当りって手順になるのかなあ。

なんとか総当りに持ち込んでもらうだけのパスワードが欲しいところですね。
それも、覚えきれなくてメモしてしまうようなものだとまた危険ですが、、、

ちなみに、この前のActiveXと同じロジックを使って簡単な暗号文エディタを作ってみましたが、
これにはもともとパスワードがしくまれていて、作ったエディタでしか読み書きできないようになってますが、
これのパスワードはWindowsでは使えませんよ、なんていう文字をいれていたりします。
http://www2.jan.ne.jp/~kajika/library/index.html
の016です。015のActiveXは使用しない仕様です。
(斬鉄剣を使ったあとの五右衛門の心境だなあ。「またつまらないものを作ってしまった」)

ちなみに、本家五右衛門が最初に斬った「つまらないもの」とは大根なんですよね。

> そう言えば、「I Love You」や、「メリッサ」のコードを公開してるサイトを、
> 見たこと有ります。
> 解説とか付けちゃって…。(笑)
> しかも、ソフトハウスの社長。(爆)

しかも女性だったりしません?


To: むたぐち さん

> やっぱりオブジェクトをそのまま渡した方が速いみたいですね。

さすがですねえ。
フォルダ再帰処理は頭が混乱するので、なかなか改良する気になれないところでした。

新しいもののコピーだったら、Xcopyを使うのがひょっとしたら最速では、
と思ったりしているのですが、なかなか試す機会(&意欲)がなくて。。。

ごんざれす田中 さん 2001年 08月 18日 10時 47分 37秒

エラー表示の修正です。

「Shell32.dllでエラーが発生しました。
エントリがありません:SHExitWindowsEx」

が表示されます。

失礼しました。

ごんざれす田中 さん (gonz@eastmail.com) 2001年 08月 18日 10時 41分 00秒

はじめまして。最近、WSHを知って検索で、ここにきました。
「さっそく、質問です。」

Windows2000にて、電源をオフにするとき。

Set WSHSHell=CreateObject("WScript.Shell")
WSHShell.Run "C:\WINNT\RUNDLL32.EXE Shell32.dll,SHExitWindowsEx 1"

を実行すると、
「Shell32.dllでエラーが発生しました。丸椿阿「△蠅泙擦:SHExitWindowsEx」
と表示されて、実行できません。
調べる方法、質問して教えてもらえるところ等わからなかったので、お教えがいます。
−感想−
まだまだ、わからないことだらけです。この掲示板の半分以上理解できないです。
がんばって、理解出来るようにしたいです。
(^_^;)

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 18日 04時 27分 53秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

松島さんとこの掲示板で、ちょっとWSHの話を書いたのですが、それを書くときに
参照したScripting Clinicに新しい記事があったので読んでみました。
新しいといっても4月の記事だったんですが。
http://www.asia.microsoft.com/japan/developer/articles/welcome/dsmsdn/scripting04092001.asp

スクリプトからオブジェクトのイベントをバインドする方法として、
HTML、WSH、WSCの各場合についてVBSとJSでどう記述するかについて述べられています。
この掲示板でも何回か取り上げていますが、よくまとまっているので
一度読んでみることをお勧めします。

私が興味を持ったのは、WSHのイベントバインドの項目にあった次の記述。

> WSH スクリプトはスクリプトの最終行を実行した直後に終了するので、このことが
> 問題になります。処理したいと思っているイベントが発生する前に終了してしまう
> 可能性もあります。この問題を扱うために、 WScript.Sleep メソッド (詳細について
> は、http://msdn.microsoft.com/scripting/windowshost/doc/wsMthSleep.htm を
> 参照してください) を使用して、長時間休止するループを作成することをお勧めします。
> イベントが発生した後は、WScript.Quit メソッドを使用してスクリプトを終了します。

というのはまあ定石なんですが、その続きにこういうことが書いてあります。

> (私たちはこれを行うことが面倒であることがわかっています。したがって、 これを解> 決することが WSH 5.6 の次のバージョンでの機能強化のリストに含まれています。)

WSHがこれまで苦手とした、常駐機能が次期バージョンで可能になる、と読めるのですが
どうでしょう。
願わくば、外部プロセスからのスクリプト終了とかも可能になるといいですね。

まだ日本語訳されていませんが、
http://msdn.microsoft.com/library/en-us/dnclinic/html/scripting06112001.asp?frame=true
こんな記事もありました。
.NET FrameworkとCLR(Common Language Runtime)でメモ帳を作ってみようという
内容みたいです。
# ん? CLRの表記が見当たりませんが、CLRは".NET Script"に改名されたのかな?

いや、メモ帳にとどまらずスクリプトエディタを作ろうとしています。
> The script editor is just a Rich Text control, but it does provide the ability to check the syntax of the script code and provide error information back to the user.
エラーチェック機能までついてますよ(^^; うーむ、すごい。

.NET(とC#)に関する話題は、ONOさんのページが充実してます。
http://www.corebase.co.jp/shu/
「気になるURL」要チェックですね。

# あ、いつのまにか.NET SDK Beta2 が出ていたのか。
# ↑そんなことも知らんかったんかーい!

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 17日 20時 21分 29秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

Script Builder用vbs.cfgオリジナル忠実バージョンを作ってみました。

[Setting]
Quotation="
Commenter='
HexPrefix=&H

[Bracket]
Count=2
Left1=/*@
Right1=*/
Color1=clTeal
Left2=/*
Right2=*/
Color2=clTeal

[Color]
Ank=clWindowText
DBCS=clWindowText
Comment=clGreen
Int=clBlue
Url=clNavy
Reserve=clBlue
Str=clTeal
Symbol=clBlue
ReserveBold=0

[WordWrap]
HorzScrollBar=1
WordWrap=0
WrapByte=70
FollowPunctuation=0
FollowRetMark=0
Leading=0
WordBreak=0

やっぱりVB使いにはこの配色が落ち着きます。


To: 土屋 さん

> 全然気にしてなかったんですが(=実は購読者なのにちゃんと読んでいない)、
> そう思って読むと、確かにそうですね。それもかなり。

なんかコンセプトが「破壊活動しないワームを作ろう!」で、そのために必要な
テクニックを探しつつより増殖率を高めていくのが趣旨っぽいのですよ。

たしかに、包丁で牛肉を切る方法を教えるのと同様、包丁で人を殺す方法を
教えても別に罪にはならんでしょう。
でも、せめて「良い子はまねしちゃいけません」等のフォローが欲しいところでは
あります。

> ちなみに私はこの手の処理(再帰とでも言うのだろうか)は、持ち運び用のマイクロドライブに、フォルダ内(サブフォルダも含めて)を検索・比較して新しいファイル(&フォルダ)だけコピーするのに使ってます。
> (使用頻度が一番のスクリプトでした)

再帰処理はWSHをファイル処理に使う上で必須事項とも言えますからね。
巷で流通しているVBSによる再帰フォルダ処理は、オブジェクトを一度文字列に直し
てからまたオブジェクトとして取得したりして無駄が多い気がします。
関数に直接オブジェクトを渡した方が速い気がするのですが、実際はどうなんでしょう。
というか、試せよ、って話ですよね。で、試しました。

On Error Resume Next
Dim iFiles
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set oRootDir = Fs.GetFolder("C:\") 'Cドライブの全ファイル数を調査

TimeCount(0) 'オブジェクトをじかに渡した場合(1回目はカウントしない)
TimeCount(1) '文字列として渡した場合(1回目はカウントしない)

For I = 1 To 10
iTimeByObject = iTimeByObject + TimeCount(0) 'オブジェクトをじかに渡した場合
iTimeByString = iTimeByString + TimeCount(1) '文字列として渡した場合
Next

MsgBox "オブジェクトをじかに渡した場合…" & iTimeByObject / 10 & "sec" & vbCrLf & _
"文字列として渡した場合…" & iTimeByString / 10 & "sec" & vbCrLf & _
"調査ファイル数: " & iFiles

Function TimeCount(mode)
dStart = Now
iFiles = 0
If mode = 0 Then
Call FileSearchByObject(oRootDir)
ElseIf mode = 1 Then
Call FileSearchByString(oRootDir.Path)
End If
TimeCount = DateDiff("s",dStart,Now)
End Function

Sub FileSearchByObject(folder) 'オブジェクトをじかに渡した場合
On Error Resume Next
iFiles = iFiles + folder.Files.Count
For Each oSubFolder In folder.SubFolders
Call FileSearchByObject(oSubFolder)
Next
End Sub

Sub FileSearchByString(folder) '文字列として渡した場合
On Error Resume Next
Set oFolder = Fs.GetFolder(folder)
iFiles = iFiles + oFolder.Files.Count
For Each oSubFolder In oFolder.SubFolders
Call FileSearchByString(oSubFolder.Path)
Next
End Sub

やっぱりオブジェクトをそのまま渡した方が速いみたいですね。


To: いちにい さん

> やっぱ、無い感じです。
> 1つのツールしかチェックしてないですが、一般的なMsgしか流れてませんでした。
> アイテムの位置をGetして、例のレジストリデータに合わせて、アイテム位置を、
> 1つずつSetしてる見たいです。

そうですか。私はこのあたりのことにあまり明るくないもので…(^^;

> (爆)
> 無茶な方法ですね。
> しかも、記事にするとは…。

あ、雑誌名思い出した。
でも、編集者の名誉のため、ここでは晒さないでおいてあげます(爆)

> 補完機能は、期待した物じゃあありませんでした。
> こんな感じ。
>
> 始めに、「for」と、タイプ。
> 次回から、「f」と、タイプしてから、CTRL+SPACEで、コンテキストメニューに、
> 「for」が表示され、選択して張り付けできる。
> 以降同じ。
> 要するに、タイプした単語を記憶するだけ。
> 色んな言語に対応って事で、機能的に、広く浅くって感じの物ですね。

そうなんですか。
たしかに、広く、浅くですね。
拡張DLLが公開されているようですが、これを適用しても同じなんでしょうか。
# って、また自分で調べない悪い癖が。

> そう言えば、「I Love You」や、「メリッサ」のコードを公開してるサイトを、
> 見たこと有ります。
> 解説とか付けちゃって…。(笑)

I Love Youのコードは私も見たことがあるんですが、あれはどう見ても素人が
みようみまねで作ったスクリプトですよ(^^;
逆に言うと、素人でも十分強力なワームを作ることができるってことです。

> しかも、ソフトハウスの社長。(爆)

そこ、嬉しがって解説しない!

いちにい さん 2001年 08月 17日 15時 23分 09秒

To: 管理人むたぐち さん

>> (そんなMsgが有るわけないか…。)
> いや、あると思いますよ。

やっぱ、無い感じです。
1つのツールしかチェックしてないですが、一般的なMsgしか流れてませんでした。
アイテムの位置をGetして、例のレジストリデータに合わせて、アイテム位置を、
1つずつSetしてる見たいです。
でも、一応、ツリービューMsgを調べてみますが…。


> user.datを削除してuser.da0をuser.datにリネーム云々という、無茶な方法が
> 載っていたので、それに対するあてつけのようなものです(^^;

(爆)
無茶な方法ですね。
しかも、記事にするとは…。


> とりあえず、Free版を試してみましたが、WSH用VBS編集に関しては、
> EmEditorに色分け定義を適用したのとほとんど変わらない気がします。
> (正規表現が使えるのが良いかも)
> シェア版だと違うのかもしれません、また試してみましょう。
> (バージョン管理やプロジェクト管理やキーワード補完機能があるみたい)
> ただ、VBSの編集モードがあるとはいえ、やはりASPやHTMLで使うVBSを想定しているようで、
> あまりWSHを考慮したつくりにはなっていないっぽいです。

頑張って、DLしてみました。
Pro版の方。
補完機能は、期待した物じゃあありませんでした。
こんな感じ。

始めに、「for」と、タイプ。
次回から、「f」と、タイプしてから、CTRL+SPACEで、コンテキストメニューに、
「for」が表示され、選択して張り付けできる。
以降同じ。
要するに、タイプした単語を記憶するだけ。
色んな言語に対応って事で、機能的に、広く浅くって感じの物ですね。
VBなら、わざわざ使う意味も無さそうです。


> http://backno.mag2.com/reader/Back?id=0000039368
> うー。これはちょっと突っ込んでおいた方がいいかもしれない。

テレホタイムに見てみます。(笑)
そう言えば、「I Love You」や、「メリッサ」のコードを公開してるサイトを、
見たこと有ります。
解説とか付けちゃって…。(笑)
しかも、ソフトハウスの社長。(爆)


To: 土屋 さん

DLLをDLしてみました。
なかなか面白いものですね。
解読されるのが心配って事ですが、土屋 さんの解説にある、ロジックの
特性からして、そんなに神経質になること無いんじゃないですか?
素人が編み出した、ロジックならともかく、専門家の作ったものなら、
仮に解法が見つかったとしても、専門知識と、専用マシンが必要って、
感じですよね?(理論的には、解読できるってレベルの物もあるし。)
とても、そこらの一般人が、易々と解けるもんでもないと思います。
今、使ってる「SHA-1」のKrack情報だけ、チェックしとけば良いかと…。
むしろ怖いのは、タコなパスを設定する、ユーザですよね。
辞書アタックしたらすぐ解るような…。(笑)
って、知識無いのに言ってますが、どうでしょ?



土屋 さん 2001年 08月 17日 11時 51分 51秒

To: むたぐち さん

> でもこのメルマガでは、どうもワーム作成ノウハウを模索しているように
> しか見えないな…。

全然気にしてなかったんですが(=実は購読者なのにちゃんと読んでいない)、
そう思って読むと、確かにそうですね。それもかなり。

ちなみに私はこの手の処理(再帰とでも言うのだろうか)は、持ち運び用のマイクロドライブに、フォルダ内(サブフォルダも含めて)を検索・比較して新しいファイル(&フォルダ)だけコピーするのに使ってます。
(使用頻度が一番のスクリプトでした)

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 17日 09時 37分 51秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

http://backno.mag2.com/reader/Back?id=0000039368

うー。これはちょっと突っ込んでおいた方がいいかもしれない。

実は私もこれと同じようなスクリプトを考えたことがあるんです。
と言っても、「スクリプトファイルによるフォルダ内ライフゲームもどき」
なんですけど(^^;

でもこのメルマガでは、どうもワーム作成ノウハウを模索しているように
しか見えないな…。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 17日 04時 47分 20秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

うーん。
SSTPlib.dll公開中止されてます。
navi.vbeは、スクリプトデコーダー用お試しスクリプト以上の価値がなくなって
しまいました(泣)

# ま、だいぶ前からあのスクリプトは動作しなくなっていましたけど。


To: 土屋 さん

> 不可逆なハッシュ値は、ハッシュ値から元データを推定できない(らしい)というのと、元データをちょっと変えれば(ターンのあとはちょっとゴミを入れる)がらっとハッシュが変わるという2点を利用して、パスワードからXOR変換用のサブキーと暗号表を動的に変えていくための擬似乱数作成のために使用しています。
> ハッシュ値をもとに擬似乱数は作れても、元データがわからないので、ターンのたびに変化していく乱数パターンが読みにくいのではと思ったのです。
> で、ハッシュを認証のためには使っていないわけです。それと、MD5は弱点が見つかったという話なので、まだ見つかっていない(らしい)SHA-1を使っています。

私、なんか追従できなくなってきました(^^;

> でとりあえず、試しに作ってみたActiveX.DLLです。
> http://www2.jan.ne.jp/~kajika/library/index.html
> の015です。お好きな方向けです。(=動作保証なし)

ダウンロードしてみました。
なかなかほのぼのした(どういう意味だ)暗号文ができますね。
ちょっと見たところでは、これが暗号文だとは思われないでしょう。

# パスワードを間違えると禍々しい(どういう意味だ)復号文がでてきますね。
# まるでrotのようだ(^^;

暗号文自体が、対応する平文とはまったく異なった意味を持つ「意味のある」文章に
なっている、というのが究極ですよね。
そういう暗号文を汎用的に作り出すプログラムができたら、面白いだろうな。

土屋 さん 2001年 08月 17日 00時 38分 56秒

To: 松島 さん、むたぐち さん、いちにい さん

ありがとうございます。

> 暗号化には、可逆的な暗号化と、不可逆的な暗号化があると思うのですが、
> ここでの話はどちらの話なのでしょうか。

復号も考えているので、可逆的です。
不可逆なハッシュ値は、ハッシュ値から元データを推定できない(らしい)というのと、元データをちょっと変えれば(ターンのあとはちょっとゴミを入れる)がらっとハッシュが変わるという2点を利用して、パスワードからXOR変換用のサブキーと暗号表を動的に変えていくための擬似乱数作成のために使用しています。
ハッシュ値をもとに擬似乱数は作れても、元データがわからないので、ターンのたびに変化していく乱数パターンが読みにくいのではと思ったのです。
で、ハッシュを認証のためには使っていないわけです。それと、MD5は弱点が見つかったという話なので、まだ見つかっていない(らしい)SHA-1を使っています。

通信の際は暗号文を用いて、手元(クライアント)でパスワードで平文に変換するということを想定しているので、通信の際にパスワードが流れることは考えていませんでした。
(パスワードの受け渡しが必要になったら、公開鍵方式をつかって送るわけです)
まあ、もともとかなり個人的な用途向けなもので、、、(^^;
心配だったのは、サイトに置いておいた暗号をパスワードなしに解読してしまう人が結構いるものなのかなあ、ということだったのです。

でとりあえず、試しに作ってみたActiveX.DLLです。
http://www2.jan.ne.jp/~kajika/library/index.html
の015です。お好きな方向けです。(=動作保証なし)
VB6のSP5で作成してますので、ランタイムが必要かも。
莫大な量の文字を連続して変換するなど過酷な試練を与えてみようなどという間違った考えはおこさないようにしましょう。
文字列が長くなると、それにつれてハッシュ値の計算も増えるので、時間がかかるかも(なにせVB)。
MD5やBase64を使うのをやめたので、BASP21も必要なくなりました。
ちなみに014はBASP21を使った最初のバージョンですが、エンコードスクリプトですので、例のデコーダーを使って見たい方はどうぞ。

自動的に読込⇒変換、変換⇒読込する簡単なエディタも作成中なのですが、DLLの作成に結構手間がかかったので(バイト配列から文字列に変換するということがなかなかできなかったもので)、今後気が向いたら作ろうという方向に進路変更中です。

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 16日 19時 29分 09秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: いちにい さん

> (そんなMsgが有るわけないか…。)

いや、あると思いますよ。

> 所で、この機能のツールって有るんでしょうかねぇ?
> 同じ様な、処理をするのかな?

http://home.att.ne.jp/gold/kaorun/index_j.htm 定番だったのですが、配布中止
http://member.nifty.ne.jp/kato/dtres/ 同様のもの
http://www.vector.co.jp/soft/win95/util/se087508.html?y あっ、きのこの人だ
http://www.forest.impress.co.jp/article/2000/07/14/windowlove.html こんなんもある

ほかにもいろいろあると思います。
たぶん、Windowメッセージをどうにかして実現しているんだと思います。

レジストリを更新して…とかいうやり方は、あくまで「レジストリに設定が記録
されているんだから、逆手に取ったら設定の復元も可能だ」というデモンストレーションに
過ぎません。
というか、以前どこかの雑誌で、デスクトップアイコンの配置を復元するには
user.datを削除してuser.da0をuser.datにリネーム云々という、無茶な方法が
載っていたので、それに対するあてつけのようなものです(^^;

> プログラム開発者向けのテキストエディター
> 60種類近くのプログラム言語のキーワードを色分け表示しながら編集できる。
> http://www.forest.impress.co.jp/library/peggy.html
> (シェア)
>
> ってのが有ったんですが、これって既出ですか?

いや、はじめて知りました。
でも何で今まで出てこなかったのか、不思議なくらいです。

とりあえず、Free版を試してみましたが、WSH用VBS編集に関しては、
EmEditorに色分け定義を適用したのとほとんど変わらない気がします。
(正規表現が使えるのが良いかも)
シェア版だと違うのかもしれません、また試してみましょう。
(バージョン管理やプロジェクト管理やキーワード補完機能があるみたい)

ただ、VBSの編集モードがあるとはいえ、やはりASPやHTMLで使うVBSを想定しているようで、
あまりWSHを考慮したつくりにはなっていないっぽいです。

いちにい さん 2001年 08月 16日 11時 45分 47秒


To: 土屋 さん

> スクリプトのエンコードって、広まらないうちに破綻がきてしまったような・・・
> それにしても、よく解読できるもんですね。

アレ、元ネタが有るんですよ。(笑)


> 出てきたのが飲み屋の電話番号だったり
> すると面白いかもしれない。(怒られるかなあ)

いい子が居る店なら、解読したいなぁ。(親父くせぇ。笑)



To: 管理人むたぐち さん

>> 所で、デスクトップのアイコンの配置って、保存・復元出来ないですかねぇ。
>> デスクトップは、ListViewなんですが、アイテムの配置って記憶出来るもんだろうか?
> 以前ネットニュースにそのテクを載せたことがあるので、再掲しましょう。

有り難うございます。
そうだったんですね。
やっぱり内部的に、処理してるって事ですね。
(そんなMsgが有るわけないか…。)
所で、この機能のツールって有るんでしょうかねぇ?
同じ様な、処理をするのかな?



プログラム開発者向けのテキストエディター
60種類近くのプログラム言語のキーワードを色分け表示しながら編集できる。
http://www.forest.impress.co.jp/library/peggy.html
(シェア)

ってのが有ったんですが、これって既出ですか?
4MBも有ったので、DLしてないですが、機能的には、どうなんでしょう?
誰か使ってる人居ます?



管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 15日 22時 23分 41秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: 土屋 さん

> これはサブフォルダがすべて****1234*みたいな形式になっていることが前提となっているんですよね。
> If IsNumeric(rt) Then
> あたりでチェックしておかないと、いけないのでは?

あ、そういわれるとIsNumericがここではもっとも適切な解ですね。

> エラーが生じたときには、何がどうなっているかわからないので、
> いったんスクリプトを終了した方が無難な気もします。
> (特にフォルダやファイル操作がからむ場合は)

私の場合、ファイル操作が絡むスクリプトでは、極力ログを取るようにしています。
1.元のファイル → リネーム後のファイル
2.元のファイル → コピー後のファイル
3.元のファイル → 削除
(移動の場合は2と3を併記。リネームも2と3で表現できると言えばできますけどね)
のような形式にしています。

> 管理人さんという響きがいいですねえ。
> ついつい響子さ〜ん。とよんでしまいそう。(私は四ツ谷さんと呼ばれてました)

めぞん一刻ですか。
というか、男ですみません。

> いやあ、調べていくと、暗号というのは奥が深いですねえ。

そりゃまあ、暗号って国家レベルの武器ですからねえ。

> ですが、性懲りもなく、ActiveXづくりに励んでます。
> Set PW = CreateObject("Private.Words")
> 暗号文 = PW.Encode("平文", "パスフレーズ")
> 平文 = PW.Decode("暗号文", "パスフレーズ")
> みたいな感じでお手軽なものを作っといて、パスワードの管理に使いたいと思っています。
> 他の人が使ったりすることを想定していないので、共通鍵方式です。

どうでもいいですけど、このコンポーネントを使ったスクリプトは
すぐに破棄しないとダメですね(^^;
あ、引数に平文を取って、標準出力に暗号文を出力するようなスクリプトにすればいいのか。

> なんといってもコンセプトは低強度日常型暗号群(なんのこっちゃ)で、
> おお、これはいかにも暗号文、と解読好きな人の労働意欲を刺激するものではなくて、
> どこからどこまでが暗号やパスワードかわからないようにカモフラージュして、
> しかも日常的なものもいろいろ暗号化して、
> 解読した人が一抹の空しさを感じるようなものが理想です。

それ、面白い。
なぞなぞとか推理小説に出てくるような暗号を自動生成できたら、楽しそうですね。

# なんかドラえもんの暗号解読機を思い出した。22世紀のFBIはすごいですね。
# ヒント: 2おき。



To: 松島 さん

> 夏コミ行って来ました。同人ソフトブースが拡大されたとは言え、WSHを利用してデモっていたのは、うちだけだったのかも。

おお、WSHコミケに進出ですか。

> #ていうか、CG集や音楽サークルやハードウェア系のところも、コンピュータ系/CDメディア配布系の全てが同人ソフトというジャンルになるのは大雑把過ぎませんかい(--;)。>コミケ準備会

たしかに大雑把ですけど、要するに「その他」の括りなんじゃないですか。
大多数は同人誌だし。
# いや、行ったことないので知らないですけど。
# 「何か」ウォッチしているうちに存在を知りました(^^;

> #無限ループでデモらせてて、停止させるために、タスクマネージャからwscript.exeを殺していたのは秘密。

そこでWMI使って欲しかったです。(って誰が興味を示すのだろうか)

> コマンドラインでもDDEでもOLE32でも、とにかく非GUIで完全コントロールできるムービー再生ソフトって、あるのかなあ……。

mci32.ocx(マルチメディアMCIコントロール)はダメでしょうか。
これ、VBに付属のコントロールなんですが、AVIなら再生できます。
…でも音声ファイル以外はWSHからは再生できないかも。
音楽CD再生のサンプルは、「ダウンロード」のページで公開してます。

というか、あきらさんのおっしゃるとおり、/play /stopで対応できますね(^^;

> 「1回再生し終ったら即終了」という動作をするものが見付けられなくて、再生時間を配列に持たせて、時間が来たらSendKeysで停止&最小化(^^;)。

意外とHTAとMediaPlayerコントロールの組み合わせが一番良かったのかも。
ムービーの下にホームページの宣伝を流してみたりして、ちょっとしたデモ風に
できると思います。
<hta:application>タグや各種スタイルを駆使すれば、全画面表示だってできますしね。

このコントロールは、
clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95 ProgID: MediaPlayer.MediaPlayer
です。
フォルダのファイルプレビューに使われています。(*.htt)
WSHから使えるかどうかは未確認です。

> 暗号化には、可逆的な暗号化と、不可逆的な暗号化があると思うのですが、ここでの話はどちらの話なのでしょうか。

参考になります。というか、その区別さえできていなかったです。

不可逆といっても、暗号化されたパスワードが盗まれたら、結局は
クラックされる可能性が出てくるわけで、だから辞書データベースにも
載らないような複雑なパスワードにしておくのが大事なわけですね、
とひとりで勝手に納得。

> > それと、こういうのって(暗号がからむものは)、アルゴリズムを公開すると解読される可能性が飛躍的に高まるものなのでしょうか。
>
> 高まります。
> 暗号化された文書と平文の文書(一部でも可)がセットで見つかっても、大きく高まります。

ですよねえ。やっぱり。
推理小説でも推理マンガでもSF(この場合、異言語の解読)でも、最初の取っ掛かりを
見つけるまでがキモですから。

# RIVENの数字の解読は楽しかった。RIVENで使われる「ドニ語」の解読を
# 試みているページもあって興味深い。
# http://www01.u-page.so-net.ne.jp/ta2/knob/riven/library/dni.html

# 最近はアルベド語の解読が流行りだろうか。
# ルフェイン語はロゼッタストーンで解読したものだが。
# http://www.forest.impress.co.jp/article/2001/07/31/arubedogohenkantool.html
# つーか、変換ツールを使うの反則だよなあ(笑)
# みかか変換と同じようなもんかな。FF10やってないので知らんのです。
# 関係ないけど、復活の呪文自動生成ツールとかもありますね。
# http://ha4.seikyou.ne.jp/home/ermine/kobayashi/dq2/



To: あきら さん

> おひさしぶりです。夏バテで開発とまってます(汗)

あらら。
涼しくなるまでお預けですね。
楽しみに待ってますよ。

> Windows Media Player は対応じゃなかったですか?
> /Play /Close とオプションつければできるはずですけど。

ですね(^^;
これ、sndrec32.exeやmplayer.exeやたしかcdplayer.exeでも使える伝統の
コマンドオプションですね。



To: pokopon さん

> 確実かどうか、また、この値の切り替えでドメインの切り替えができるかどうか試していませんが、LOGON先を替えると、これらの値が変更されます。
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
> の、AltDefaultDomainName と DefaultDomainName
> が、該当するかも? 両値が同時に変更されますが、どう違うのか? 私には分かりませんでした。
> むたぐちさんの方の環境で、確かめていただければ....。
> 我が家の環境では、変更可能なドメインが2つしかないので、確かめられませんです。

ありがとうございました。
うちは、ドメイン2つ、ワークグループ1つに属す可能性のあるノートが一台ありまして、
これを何とか切り替えられないかと画策中です。
kemanetがWin2000対応でないのは、もしかするとWin2000ではレジストリ書き換え
だけではネットワーク設定を書き換えられないためなのかもしれません。

今度試してみます。
本当はWMIで設定できたらスマートなんですが、やり方がわからない…。

IPアドレスはnetshで簡単に設定できるんですけどねえ。
(WSH+WMIを使うまでもない)

> なんてコマンドを入れても、これまたキャンセルされています。このlmscript は単にバッチファイルを実行するだけではなく、
> 途中で制御を止めるようなコマンドも使えないようです。途中で止まらず「必ず終了」するように設計されているようですね。

ふむふむ。
まあ、途中で止まってもらったら困るわけですから、ある意味
当然の実装ですね。

> >といってもWSHはpifファイルを扱えませんから…。
> そうなんですよね。ここがネックです。WHSでいじれれば、即座に解決可能ですけど。

WSHにしてみれば、pif? 僕はそんな過去の遺産にとらわれないよふふん、ってな
かんじでしょう。

# その割に、なぜか最近になってDOSに歩み寄っている傾向があるのは気のせいだろうか。

> すいません。
> To:むらぐちさん
> となっていました。大変失礼致しました。

だから黙ってたらわからないのにー(笑)

pokopon さん (pokopon@jomon.ne.jp) 2001年 08月 15日 21時 21分 28秒

To:むたぐちさん

すいません。
To:むらぐちさん
となっていました。大変失礼致しました。

pokopon さん (pokopon@jomon.ne.jp) 2001年 08月 15日 18時 19分 16秒

To:むらぐちさん

>> こちらでした。この値は、ネットワークコンピュータのプロパティーで設定するMicrosoft ネットワーククライアントのプロパティーでNTドメイン名が格納されているところです(多分)。
>> LOGONの際に規定値以外の値(他ドメイン名)を入れると、こちらも変更されます。こちらの値を拾った方が確実かと思いました。

>ついでにWindows2000ではどこにあるか調べてもらえるとうれしいです。
>ドメインを切り替えしなきゃいけない事情があるのですが、
>レジストリをいじるだけで切り替えられるなら楽なんですけどね。
確実かどうか、また、この値の切り替えでドメインの切り替えができるかどうか試していませんが、LOGON先を替えると、これらの値が変更されます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
の、AltDefaultDomainName と DefaultDomainName
が、該当するかも? 両値が同時に変更されますが、どう違うのか? 私には分かりませんでした。
むたぐちさんの方の環境で、確かめていただければ....。
我が家の環境では、変更可能なドメインが2つしかないので、確かめられませんです。

>> よく考えたら、バッチファイル名が分からなくても良いですね。全ての実行中のウインドウを「最小化」すれば良いんです。
>> NTのドメインに参加・LOGONする際に最初に起動して動くのはLOGONスクリプト Lmscript.exe ですが、起動DOSバッチファイルに下記のようなWSHスクリプトを走らせれば....。
>> -----起動バッチファイルの一番最初で実行
>> Set Shell = WScript.CreateObject("Shell.Application")
>> Shell.MinimizeAll()
>なるほど。
>でもなんかいい方法を考えたいですねえ。
早速試してみましたが、「ダメ」でした。このスクリプト以降のDOSコマンドはなぜかキャンセルされます。
??? ですが、職場で確認したところ、最初で起動させれば最小化はされますが、その後に記述したDOSコマンドはキャンセル(というか実行されない)されているようです。
ちなみにLOGONスクリプトのBAT内に
pause
なんてコマンドを入れても、これまたキャンセルされています。このlmscript は単にバッチファイルを実行するだけではなく、
途中で制御を止めるようなコマンドも使えないようです。途中で止まらず「必ず終了」するように設計されているようですね。

なお、このlmscript.exe を使ってのLOGONはWin9xだけです(多分)。WinNT/2k では探してもこのファイルは見当たりませんので。

>といってもWSHはpifファイルを扱えませんから…。
そうなんですよね。ここがネックです。WHSでいじれれば、即座に解決可能ですけど。

>Lmscript.exeにオプションとかないんでしょうか。
残念ながら、オプションはないようです。 Lmscript.exe /? なんてやっても、ガイドは出てきませんでした。
他の書籍を当たっては見ているのですが、あまりこの点について記述は見当たりません。

仕方ありません。最小化を定義したlmscript.pifをクライアントの%Windir%system へ強制コピーすることも考えています。
WinNT系なら、コピーは不要です(というか、無意味です)。


あきら さん (ariaki@fh.freeserve.ne.jp) 2001年 08月 15日 16時 54分 10秒
URL:http://www.ariaki.com/

おひさしぶりです。夏バテで開発とまってます(汗)

To 松島さん

> コマンドラインでもDDEでもOLE32でも、とにかく非GUIで完全コントロールできる
> ムービー再生ソフトって、あるのかなあ……。

Windows Media Player は対応じゃなかったですか?
/Play /Close とオプションつければできるはずですけど。
外してたらごめんなさい。

松島 さん (matsushima@popup.org) 2001年 08月 15日 14時 27分 24秒
URL:http://www.popup.org/ai/

夏コミ行って来ました。同人ソフトブースが拡大されたとは言え、WSHを利用してデモっていたのは、うちだけだったのかも。
#ていうか、CG集や音楽サークルやハードウェア系のところも、コンピュータ系/CDメディア配布系の全てが同人ソフトというジャンルになるのは大雑把過ぎませんかい(--;)。>コミケ準備会

ノーパソのバッテリ消費を抑える為に、デモるムービー(複数)を連続再生させずに、個々のムービーの再生の間にウェイト(sleep)を入れてデモったんですが、その処理にWSHを使いました。
#無限ループでデモらせてて、停止させるために、タスクマネージャからwscript.exeを殺していたのは秘密。

コマンドラインでもDDEでもOLE32でも、とにかく非GUIで完全コントロールできるムービー再生ソフトって、あるのかなあ……。
「1回再生し終ったら即終了」という動作をするものが見付けられなくて、再生時間を配列に持たせて、時間が来たらSendKeysで停止&最小化(^^;)。
ローテク万歳、高い理想よさようなら(ぉぃ)。

お蔭で、出発時にミスでバッテリの残量が50%程度になっていたにも関わらず、想定以上の時間、安定して稼働させられました。(結果オーライ)


> # チャブーンさんか松島さん、助けて(^^;

私もそんなに詳しいわけではないのですが、知っている範囲で(^^;)。

暗号化には、可逆的な暗号化と、不可逆的な暗号化があると思うのですが、ここでの話はどちらの話なのでしょうか。

例えば、後者で、CRC32やMD5等のメッセージダイジェスト/チェックサムを利用して、ユーザ認証を行う場合、
・サーバ側には不可逆暗号化されたパスワードを保存
・ユーザはクライアントに普通にパスワードを入力
・クライアントからサーバへ不可逆暗号化したパスワードを送信して照合
とすると、サーバ上の「不可逆暗号化されたパスワード」が第三者に見られても、パスワードを探ることは出来ません。良く用いられている手法です。でも、適切なクライアントの振りをして直接サーバに不可逆暗号化されたパスワードを送ること(偽装)が出来れば、暗号の強度は、平文のパスワードを保存/通信しているのと変わりません。
鍵を用いていないので、暗号とは呼べないものなのかも知れません。(単なる不可逆変換と言うか……)

> パスワードを日本語可にすると、漢字の多さが武器になって、パスワード総当り方式がかなり大変になる気がしますが、、、

文字集合と符号化方式を定めておかないといけません。
また、日本語を入力できない環境では解けない可能性も考慮しなければなりません。
#Windows系で丸付き数字のパスワードを入れたら、Macの人は困るはずです(^^;)。
#考慮して、想定外環境とする結論に至るのもアリ。

> それと、こういうのって(暗号がからむものは)、アルゴリズムを公開すると解読される可能性が飛躍的に高まるものなのでしょうか。

高まります。
暗号化された文書と平文の文書(一部でも可)がセットで見つかっても、大きく高まります。
#暗号じゃないけど、ロゼッタストーンとか……。

長いパスフレーズ(鍵)を適用できる(している)と、アルゴリズムが公開されていても、ある程度の強度は保つことがでると思います。

P.S.
ごちゃまぜ暗号化アルゴリズムは、バレ難いように思えて実は大した強度が無かったり、ということがありますので、注意して下さい。(乱数生成のアルゴリズムにも似た面があるかも)


土屋 さん 2001年 08月 15日 08時 49分 59秒

To: ひっし さん

> rt = mid(name,5,4)
> st = CLng(rt)   ←ここでエラーが起こります

これはサブフォルダがすべて****1234*みたいな形式になっていることが前提となっているんですよね。
If IsNumeric(rt) Then
あたりでチェックしておかないと、いけないのでは?

エラーが生じたときには、何がどうなっているかわからないので、
いったんスクリプトを終了した方が無難な気もします。
(特にフォルダやファイル操作がからむ場合は)

それと、エクセルファイルはFor〜Nextの外に置いておいて、
ループのたびにいちいち開いたり閉じたりしなくてもいいのでは。
または、いっかいエクセルを起動したらあとはデータをディクショナリーオブジェクトに入れてしまうと、処理が速くて簡単になりそうな気も、、、


To: 管理人むたぐち さん

管理人さんという響きがいいですねえ。
ついつい響子さ〜ん。とよんでしまいそう。(私は四ツ谷さんと呼ばれてました)

いやあ、調べていくと、暗号というのは奥が深いですねえ。
今までの話が恥ずかしくなってきました。

ですが、性懲りもなく、ActiveXづくりに励んでます。
Set PW = CreateObject("Private.Words")
暗号文 = PW.Encode("平文", "パスフレーズ")
平文 = PW.Decode("暗号文", "パスフレーズ")
みたいな感じでお手軽なものを作っといて、パスワードの管理に使いたいと思っています。
他の人が使ったりすることを想定していないので、共通鍵方式です。

なんといってもコンセプトは低強度日常型暗号群(なんのこっちゃ)で、
おお、これはいかにも暗号文、と解読好きな人の労働意欲を刺激するものではなくて、
どこからどこまでが暗号やパスワードかわからないようにカモフラージュして、
しかも日常的なものもいろいろ暗号化して、
解読した人が一抹の空しさを感じるようなものが理想です。

今のところ、本文はBase64でエンコードしたあと、XORで処理をするようにして、
パスワードはSHA-1でハッシュにしたあと本文の長さに合わせて擬似乱数化するという、
文系歴史学中国史専攻出身らしからぬ展開を見せています。
(本当は何がなんだかよくわかっていないのですが)

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 14日 21時 30分 46秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: ひっし さん

> いま、ファイル名の変換でファイル名の数字のコードからエクセルの表を
> 読み込んで、エクセルのシートにあるコードとファイル名のコードが合えば、エクセルの
> シートのコードの隣にある名前をファイル名に加えるスクリプトを作成しま
> した。実行すると、うまくいくのですが一度エラー(同じファイルがあったり)
> がおこるとファイル名のコードを文字形式から、数値形式に置き換えるところで、
> 「型式があっていません」とエラーがでてしまい、その後の変換でも全てエラー
> になってしまいます。

こういうときは、まず本当に変数に値が正しく代入されているかどうか、
確認してみるといいでしょう。
MsgBox rt
としたとき、数字が表示されていますか?

ひっし さん 2001年 08月 14日 13時 31分 03秒

以前、何度かこの掲示板にお世話になった、ひっしと言います。
また、ちょっとした問題にぶつかったのでよろしくお願いしますm(__)m。

いま、ファイル名の変換でファイル名の数字のコードからエクセルの表を
読み込んで、エクセルのシートにあるコードとファイル名のコードが合えば、エクセルの
シートのコードの隣にある名前をファイル名に加えるスクリプトを作成しま
した。実行すると、うまくいくのですが一度エラー(同じファイルがあったり)
がおこるとファイル名のコードを文字形式から、数値形式に置き換えるところで、
「型式があっていません」とエラーがでてしまい、その後の変換でも全てエラー
になってしまいます。
なぜ、こうなってしまうのか自分には理解できないので、もし分かる方が
いらっしゃれば、お教えください。お願いします。


作成中のスクリプトです。

On Error Resume Next
Set gFolder = Fs.GetFolder("C:\test")
For Each mkf In gFolder.SubFolders
Set SrFolder = Fs.GetFolder(mkf)
Name = SrFolder.Name
'コードからエクセル表と照合して名前を取得
myFile = "C:\list.xls"
num = 300
Set myExcel = WScript.CreateObject("Excel.Application")
Set myBook = myExcel.Workbooks.Open(myFile)
rt = mid(name,5,4)
st = CLng(rt)   ←ここでエラーが起こります
ss = st

'表を1行からnum行まで読みこんでコード照合
For qa = 1 To num
If ss = myExcel.Cells(qa,1).Value Then
tt = myExcel.Cells(qa,2).Value
End If
Next
myExcel.Quit

'フォルダ名変更
tesn = Name & tt
SrFolder.Name = tesn

If Err Then
MsgBox Err.Description & " (Error No = " & Err.Number & ")" & vbnewLine & vbNewLine &_
"エラー確認" & SfolName,16,"異常発生"
Err.Clear
End If

Next


フォルダ名は、「1234_12345」などです。

エクセルの表です
コード 名前
1111  第一
1112  第二
1113  第三


管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 13日 17時 49分 16秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

To: pokopon さん

> ただ、
> 我が職場の機器には、まだ古いWin95があります。  (^^ゞ (さすがにDosやWin3.1はありませんが)
> ですのでこの方法には、ためらいがありました。GetFileVersionが使えない事を想定してです。

そういうことですか。
すいません、そこまで深くは考えていませんでした。
ただ、WSHだけをアップグレードしておけば、Win95でも問題ないと思いますよ。
# WSH自体、そもそもWIn95には最初からは入っていませんしね。

> 2.その後で、
> WinNT系以外なら:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
> WinNT/2Kなら  :HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion
>  で、OS名を得る(バージョンも含め)。          ↑  ここにありました

あ、本当ですね。Windows NTキーですか。気が付かなかったなあ。


To: matu さん

> コンパイラは、こちらからダウンロードできます。
>
> Microsoft HTML Help Downloads
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp
>
> コンパイラはコマンドラインでも動かせますし、プロジェクトファイルも
> iniファイルみたいな書式のテキストファイルなので、コンパイルまで自動
> 化できそうです。

どうもありがとうございます。
今度試してみますね。

自動化できたら便利そうですね。
HTMLヘルプって、意外と便利ですし。
「WSH Lab.の記事を全部ダウンロードしてHTMLヘルプ化する」スクリプトを
作りましょうか。というか、誰か作ってくれませんか(^^;


To: チョコ さん

> 今まではバッチを用いていたのですが、MSが16ビットアプリの動作保証をしない??

バッチって16ビットアプリになるんでしょうかねえ?
どっちにしても、Win9xではAutoexec.batなんていう、生粋のバッチファイルを起動時に
実行するので、バッチファイルを実行すること自体に問題はないと思います。
あと、Win9xでは16ビットアプリは問題なく動くことが多いです。
というか、Win2000でも、デバイスを直で叩くようなもの以外なら、
たいてい動作しますよ。


To: pokopon さん

> こちらでした。この値は、ネットワークコンピュータのプロパティーで設定するMicrosoft ネットワーククライアントのプロパティーでNTドメイン名が格納されているところです(多分)。
> LOGONの際に規定値以外の値(他ドメイン名)を入れると、こちらも変更されます。こちらの値を拾った方が確実かと思いました。

ついでにWindows2000ではどこにあるか調べてもらえるとうれしいです。
ドメインを切り替えしなきゃいけない事情があるのですが、
レジストリをいじるだけで切り替えられるなら楽なんですけどね。


To: Lib30 さん

> 最近CでCGIをやるのに挑戦しています。大学にはいると情報処理の授業でやるらしいので、
> それなら大学に入る前にマスターしようと思ったのですが、なかなかむつかしいです。
> というか、パソコンばっかりやっていて勉強をあまりしていません。大学に落ちたら本末転倒やな。

いえいえ、そのスキルは今後絶対役に立つと思いますよ。

> ちなみにデフォルトではローカルでしか使えませんが、
> HKEY_LOCAL_MACHINE\SOFTWARE\ActiveState\PerlScript\1.0\EnabledZones
> の値を「 1(0x00000001)」にすると、ネットワーク上のHTMLファイルに記述された
> PerlScriptも実行できるようになるらしいです。

なるほど。
PerlScriptは、独自のセキュリティ設定を持っているわけですね。
IEというかWindowsでは、ActiveX スクリプトとActiveX コントロールで
それぞれ別々にゾーンごとのセキュリティ設定をおこなうことができますが、
PerlScriptの場合、スクリプトと言ってもコントロールなみに危険なので、
このセキュリティ設定をそのまま適用することはできないですからね。
そういうことがちゃんと考えられているようで安心しました(^^;

> こっちはむちゃくちゃ暑いです。先日39.9度を記録し、日本一暑い町としてニュースで流れました。
> というか、温度計の場所が悪いです。温度計は家から1kmほどはなれた消防署の駐車場にあるらしく、
> 道路のそば、アスファルトの真上というかなり暑そうなところにあります。
> でもどっちにしろかなり暑いです。

うーん、どこだろう? たしか日本記録は40.8℃とかでしたよね。(フェーン現象によるやつ)
気温が高くても、湿度がそれほど高くなければすごしやすいんですがねえ。
日本の夏はそもそも湿度が高い上、温暖化やヒートアイランド現象で
気温も高くなるもんだから、ますますすごしにくくなっているわけですね。
うー。


To: 土屋 さん

> 『WSH専用のエディタ「WSHEditor」の大公開』
> というのを見つけました。
> http://www.internetclub.ne.jp/TECH/Ztoday/2001/010130.html
> VBで作られたものです。
> 色分けがあると面白いんだけど。

これはVBのテキストボックスコントロールを使っているっぽいので
無理じゃないですかね。

メニューの関数名の挿入は、キャプションが関数名そのものじゃなく、その関数の機能で
かかれているのが面白いですね。


To: いちにい さん

> でも、個人的には、出来ないよりも、色々出来る方が良いです。(欲張り。笑)
> 開発者向けの物なんで、良いかなぁ〜。なんて、簡単に考えてます。

開発者向けのわりには、普通のPC雑誌でよく取り上げられてますね(^^;

> (笑)

って、私は本気でそう思ったんですが(^^;
VBのサンプルにそんなのがあったんですか。

> さくっとですか…。
> 自分の場合は、結構判らないところが多くって、サクッとエラーが出ちゃいますね。(死)

このエラーの嵐を乗り越えたところに、快適な世界が待っているのですよ。

> 所で、デスクトップのアイコンの配置って、保存・復元出来ないですかねぇ。
> デスクトップは、ListViewなんですが、アイテムの配置って記憶出来るもんだろうか?

以前ネットニュースにそのテクを載せたことがあるので、再掲しましょう。

---転載ここから---
ツールバーの設定がレジストリに記録されるのはログオフ時であり、設定をレ
ジストリから読み込んで、実際に配置がおこなわれるのはログオン時であるた
めです。
レジストリを書き換えただけでは、配置は復元されず、そのままログオフすれ
ば、その時点での配置がレジストリに書き込まれてしまいます。

Windowsの"起動前"に、該当キーを書きこめばうまくいきます。


●保存の手順
1) ツールバーを手動で好きなように配置する

2) Windowsを再起動。再ログオンでもいいと思う。
この手順を忘れないようにしてください。ツールバーの配置をレジストリに記
憶させる手順ですので。

3) レジストリエディタで、
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop
キーを書き出す。

もしくは、

regedit.exe /e C:\desktop.reg
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop

を「ファイル名を指定して実行」から実行しても同じ。これだと、該当キーが
直接C:\desktop.regに書き出される。
ショートカット化しておくと便利ですね。

4) desktop.regを編集。
"viewview2"と"cabview"の項目を削除する。デスクトップのアイコン配置も保
存しておきたい場合は、そのままにしておく。逆に、デスクトップアイコンの
配置のみを保存しておきたい場合は、"taskbar"と"toolbars"を削除。


●復元の手順
1) MS-DOSモードで(再)起動する。

2) regedit.exe C:\desktop.reg
と打ち込む。これで、desktop.regの内容がレジストリに読み込まれます。

3) exit
と打ち込んで、Windows起動。

1)〜3)を自動化するには、

1') バッチファイル(restore.batとでも命名)に
regedit.exe C:\desktop.reg
exit
と書く。

2') restore.batのプロパティの「プログラム」タブの「詳細設定」を押し、
「MS-DOSモード」にチェックを入れる。

3') restore.batを実行すると、勝手にDOSモードに切り替わり、レジストリを
復元してWindowsを再起動してくれます。
---転載ここまで---

これはWin9xでのみ使えるテクニックです。(ME不可)
こんな面倒なことをせず、そういうことをしてくれるソフトを
使うのがいいと思います(^^;

> ショートカットなら、文字背景の色を変えるとかのが良いんですけど。
> 個人的には。
> 家のアイコンは、サイズを小さくしてるんで、ショートカット用の小さい矢印?が、
> 見えないので…。(実行ファイルを、デスクトップに置いてる物がある。)

私は、shell32.dllのIconIndex=30のアイコンをショートカット用のアイコンに
使っています。(普通の小さい矢印のショートカットアイコンはIconIndex=29)
これ、黒地に白のアナログ時計みたいに見え、なかなかかっこいいので
使っているんですけど、もともとショートカット用のアイコンかどうかは知りません。


To: あんのうん さん

> To イチローさん
> Now関数を使うのが一番簡単かと思います。

ありがとうございます。
とくに付け加えることはありません(^^;


To: pokopon さん

> よく考えたら、バッチファイル名が分からなくても良いですね。全ての実行中のウインドウを「最小化」すれば良いんです。
> NTのドメインに参加・LOGONする際に最初に起動して動くのはLOGONスクリプト Lmscript.exe ですが、起動DOSバッチファイルに下記のようなWSHスクリプトを走らせれば....。
> -----起動バッチファイルの一番最初で実行
> Set Shell = WScript.CreateObject("Shell.Application")
> Shell.MinimizeAll()

なるほど。
でもなんかいい方法を考えたいですねえ。
といってもWSHはpifファイルを扱えませんから…。

Lmscript.exeにオプションとかないんでしょうか。


To: 土屋 さん

> XORなので8ビット(254通り)の演算が基本なのですが、これにBase64を組み合わせることによって、暗号強度って高まるものなのでしょうか。
> パスワードを日本語可にすると、漢字の多さが武器になって、パスワード総当り方式がかなり大変になる気がしますが、、、

私、暗号化に関しては疎く、あまりまともなことが言えないのですが…。
先日のチャットでちょっと話題になったんですが、何の話をしたんだっけ? (忘れてる)
ただ、そのとき出てきたのが、「みかか変換スクリプト」だということは覚えてます。
# チャブーンさんか松島さん、助けて(^^;

> それと、こういうのって(暗号がからむものは)、アルゴリズムを公開すると解読される可能性が飛躍的に高まるものなのでしょうか。

DESとか、アルゴリズムはわかっていても、鍵のビット数を増やすことで
暗号強度を上げられますよね。
# ただ、この手の暗号は、量子コンピュータが実用化されればひとたまりもない
# こともたしかなんですが。

そういえば、2chの「トリップ(ひとりキャップ)」は速攻で解読されていましたね。
http://corn.2ch.net/entrance/kako/997/997381086.html
Perlのcryptを使っているらしいです。

暗号なんて解読するためにあるんです。

# 広辞苑で「暗号解読」を引いてみて下さい。最初何のことかと思ったよ。


To: いちにい さん

> 大体、パスに日本語を入れるって、案外考えないです。
> 総当りアタックには、入力回数制限とかも、結構利きますよ。
> 連続して、処理できないので、嫌になります。

パスワードは英単語とかにしない、大文字小文字を混ぜる、数字や記号を入れる、
というのが基本ですが、可能なら日本語にすると、かなり安全な
パスワードができるような気がします(^^;


To: ari さん

> あのウィルス反応はやはり誤検出だったようで、
> パターンファイルを更新したら、
> 反応しなくなりました。

ひとまず安心ですね。

> でも、エンコードしてあるスクリプト自体あまり見かけたことがなかったりして。。。
> それで、そのサンプルとここにあった任意ナビくらいしか試せませんでした…m(_ _;)m

たしかに、普通はエンコードしたスクリプトを配ることはないですね。
ウィルスやワームならあるかもしれませんが。

Webページでスクリプトをエンコードしているとこってあるのでしょうか。
怖くて訪問できませんね。


To: 土屋 さん

> みなさんも、飛び出してくる牛には十分気をつけましょうね。

うーん、牛はあまり見ませんが、最近イノシシが街を闊歩しているようです。

> スクリプトのエンコードって、広まらないうちに破綻がきてしまったような・・・
> それにしても、よく解読できるもんですね。

やっぱり暗号って解読されるためにあるような気が。
某「何か」の暗号化キャラクターファイル群もことごとく解読されたという
話ですし。

> 今考えているのは、例の6,65,37,122,28,127,49,1,87,67・・・という暗号文(擬似乱数?)をサーバーにアップしておいて、クライアント側でその数字を取得して平文に変換して表示するというものです。
> これって、どこまで安全なのかなあ。

公開鍵暗号方式に近いものなのかな?

土屋 さん 2001年 08月 13日 08時 31分 14秒

個人的に、この夏最大の出来事は、なんといっても、車での通勤途中、道路に牛が飛び出してきたことでしょう。
おっきな黒い牛が2頭ほど。
車は手前で止まりましたが、道路の真ん中でこちらを振り向いた牛のびっくりした表情と、後ろから追いかけてきた農家の人のあせった表情が印象的でした。
みなさんも、飛び出してくる牛には十分気をつけましょうね。


To:いちにい さん、ari さん

スクリプトのエンコードって、広まらないうちに破綻がきてしまったような・・・
それにしても、よく解読できるもんですね。


■暗号の話
WSHで暗号化するスクリプトは、どう考えてもロジック丸見えですよね。

今考えているのは、例の6,65,37,122,28,127,49,1,87,67・・・という暗号文(擬似乱数?)をサーバーにアップしておいて、クライアント側でその数字を取得して平文に変換して表示するというものです。
これって、どこまで安全なのかなあ。

ちなみに、その後パワーアップしたのですが、基本的なロジックは、ごみを少々いれながら2重にBase64処理して、その後XOR処理してます。パスワードは、これもごみを少々いれながらMD5処理をして、平文の長さに合わせて、最大8000桁まで繰り返しのないキーコードを生成して使用してます。
ちょっとマニアックかなあとも思ったのですが、処理があんがい速かったので、割といいかも。
それで、これを予算と時間をかけて解読する人がいて、出てきたのが飲み屋の電話番号だったりすると面白いかもしれない。(怒られるかなあ)

ari さん 2001年 08月 13日 00時 36分 42秒

To:むたぐちさん
あのウィルス反応はやはり誤検出だったようで、
パターンファイルを更新したら、
反応しなくなりました。


■デコーダの話

何気に気になったので探してみたらあっさり見つかりました。
で、バッチリ全部見れちゃいました…

> でも、エンコードしてあるスクリプト自体あまり見かけたことがなかったりして。。。
それで、そのサンプルとここにあった任意ナビくらいしか試せませんでした…m(_ _;)m

いちにい さん 2001年 08月 13日 00時 14分 54秒

To: 土屋 さん

>> 所で。そのサンプルは、自分自身をデコードできないようにしてる見たいですが。
>> 例のVB製デコーダに掛けると、どうなるんでしょうねぇ?(笑)
> やっぱりだめですね。(^^;)
> 過去ログに出てくるのでデコードできるかも。
> でも、エンコードしてあるスクリプト自体あまり見かけたことがなかったりして。。。

ですね。
見かけたこと無いです。
ココみたいに、サンプルを置いてるところとか、他に知らないし。
と言うか、エンコードできるの知らなかったくらいだし。(笑)
デコードのサンプルコードがあるので、某エディタ用プラグインを、
作ろうかと思ったけど、需要が無さそうですね。(笑)
自分自身、デコードして、コードを見ることに興味ないし。


> ■暗号化の話題
> ところで、暗号について調べていて(CSPなど何度読んでも分かりませんが)、
> XORくらいだったらぼんやりと使えたので、それとBASP21のBase64とMD5機能を使って、簡単なス
> クリプトを作ってみたのです。

CSP?
存在自体知りませんでした。(爆)
こういう物は、好きですが、技術的なことは、よく判んないです。(死)


> XORなので8ビット(254通り)の演算が基本なのですが、これにBase64を組み合わせることによっ
> て、暗号強度って高まるものなのでしょうか。

素人考えですが、組み合わせが多い方が、良いんじゃないですか?(オイ)
組み合わせる物にもよるんでしょうが。
XL97のVBAパスデコードロジックも、XORとか使ってましたね。
ロジックは、VBSの物より簡単でしたが…。
VBに移植したけど、いまだにロジックを理解してない。(笑)


> パスワードを日本語可にすると、漢字の多さが武器になって、パスワード総当り方式がかなり大
> 変になる気がしますが、、、

でしょうね。
大体、パスに日本語を入れるって、案外考えないです。
総当りアタックには、入力回数制限とかも、結構利きますよ。
連続して、処理できないので、嫌になります。


> それと、こういうのって(暗号がからむものは)、アルゴリズムを公開すると解読される可能性
> が飛躍的に高まるものなのでしょうか。
> アルゴリズムがわかっても、パスワードが破られない限り、かなり大丈夫なものなのでしょう
> か?

ロジックにも依るんじゃないですかね?
ロジックが公開されてても、専用マシンで、かなりな時間を掛けないと解けない物も
有るみたいだし。


> パスワードを行きつけの店のママの名前にしたり、暗号もCSVファイルに紛れ込ませたりすると、結構自分だけの秘密
> が持てるかも。(なんて貧弱な発想・・・)

行きつけの店のママ?
何だか、変なところに反応しちゃいました。(爆)
長いこと、呑みに行ってないので、羨ましいというか。
昔は、週末には、必ず呑みに行ってたのになぁ〜。(何、書いてんだか…。汗)

又、内容のないレスを付けちゃった。(笑)

土屋 さん 2001年 08月 12日 17時 49分 11秒

To: いちにい さん

> 所で。そのサンプルは、自分自身をデコードできないようにしてる見たいですが。
> 例のVB製デコーダに掛けると、どうなるんでしょうねぇ?(笑)

やっぱりだめですね。(^^;)
過去ログに出てくるのでデコードできるかも。
でも、エンコードしてあるスクリプト自体あまり見かけたことがなかったりして。。。


■暗号化の話題
ところで、暗号について調べていて(CSPなど何度読んでも分かりませんが)、
XORくらいだったらぼんやりと使えたので、それとBASP21のBase64とMD5機能を使って、簡単なスクリプトを作ってみたのです。

たとえば、平文を「この文は暗号化されていません。」
パスワードを「目に青葉山ほととぎす初鰹」(日本語でもOKなのがミソ)
とすると、
暗号文?「6,65,37,122,28,127,49,1,87,67,4,123,64,87,86,126,10,86,64,32,69,80,40,23,94,22,98,33,12,90,121,7,6,65,15,122,94,108,32,112」
というデータを得ることができます。(暗号に見えないところがミソ)

当たり前ですが、暗号文⇒平文も可能です。(改行も復元します)

XORなので8ビット(254通り)の演算が基本なのですが、これにBase64を組み合わせることによって、暗号強度って高まるものなのでしょうか。
パスワードを日本語可にすると、漢字の多さが武器になって、パスワード総当り方式がかなり大変になる気がしますが、、、

それと、こういうのって(暗号がからむものは)、アルゴリズムを公開すると解読される可能性が飛躍的に高まるものなのでしょうか。
アルゴリズムがわかっても、パスワードが破られない限り、かなり大丈夫なものなのでしょうか?
そういう迷いがあってアルゴリズムを公開していませんが、、(きっとわかるとあまりに簡単なのでがっかりされるかもしれませんが。<それもこわい)
(簡単だと計算時間が速くていいですが)

使い道としては、自分が管理しているパスワードや、他人に知られたくないサイトのアドレス(どんなのがあるんでしょう)の管理くらいしか思い浮かばないのですが、パスワードを行きつけの店のママの名前にしたり、暗号もCSVファイルに紛れ込ませたりすると、結構自分だけの秘密が持てるかも。(なんて貧弱な発想・・・)

pokopon さん (pokopon@jomon.ne.jp) 2001年 08月 11日 21時 52分 02秒
URL:po

To:むたぐちさん
前回のLOGONスクリプトのDOS窓の件について
>一発で、簡単に実現する方法を見つけられないのですよ。
>WSHで制御しようにも、実行DOSバッチファイルの名前が個々で違いますので、制
>御できますかどうか。

よく考えたら、バッチファイル名が分からなくても良いですね。全ての実行中のウインドウを「最小化」すれば良いんです。
NTのドメインに参加・LOGONする際に最初に起動して動くのはLOGONスクリプト Lmscript.exe ですが、起動DOSバッチファイルに下記のようなWSHスクリプトを走らせれば....。
-----起動バッチファイルの一番最初で実行
Set Shell = WScript.CreateObject("Shell.Application")
Shell.MinimizeAll()

チョびっとだけDOS窓が出るでしょうが、すぐに最小化されますね。このスクリプトを実行した後、開いたウインドウはそのままです。

当面、これで解決しそうです。
(本来は、この「チョびっと」さえ、許しがたいのですが....まあ、我慢します)
お騒がせしました。




あんのうん さん 2001年 08月 11日 03時 32分 30秒

To イチローさん
Now関数を使うのが一番簡単かと思います。

Dim Fs,ots1
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set oTs1 = Fs.OpenTextFile(".\test.log", 8 ,TRUE)
oTs1.WriteLine Now & "test"
oTs1.Close

いちにい さん 2001年 08月 11日 00時 23分 16秒

To: 管理人むたぐち さん

> 私はそうは思わないんですよ。
> コンポーネントの登録情報とかをユーザーがいじる必要ってないと思いません?
> というか、下手にいじるとやばいことになりますよね。

そうですね。
あの辺りは、弄ること無いですねぇ。
でも、個人的には、出来ないよりも、色々出来る方が良いです。(欲張り。笑)
開発者向けの物なんで、良いかなぁ〜。なんて、簡単に考えてます。


>> で、ツールを探して、RegCleanを見つけたときには、(VBに付いてるらしい。笑)

> VBについているんですか?
> …あ、VBってウィルスバスターですか。

(笑)
実は、VB4に付いてたらしいです。(しかも問題有り。)
VB5からは、有りません。
勿論、バスターに付いてません。(笑)
あのツール問題があるのか、リンクが切れてました。


>> ”「〜へのショートカット」を取り除く” コレ、頂きました。
> こういう50行未満のちょっとしたスクリプトが、実はWSHの真骨頂を発揮する分野だと
> 思うんです。さくっと作ってさくっと使う、というのが私の理想。
> # だから使い捨てになることも多いんですけどねえ。

さくっとですか…。
自分の場合は、結構判らないところが多くって、サクッとエラーが出ちゃいますね。(死)
所で、デスクトップのアイコンの配置って、保存・復元出来ないですかねぇ。
デスクトップは、ListViewなんですが、アイテムの配置って記憶出来るもんだろうか?


> Win2000なら、TweakUIを使って、最初から「〜へのショートカット」が
> つかないようにすることもできますけどね。

Win2000は、サッパリです。
画面すら見たこと無いですねぇ。
やっぱ、色々便利そう。


> つーか、日本語でやられるから冗長に感じちゃうんですよね。
> 英語版Windowsでは、"Shortcut to hoge" って感じになるのかな? それなら許せる(笑)

ショートカットなら、文字背景の色を変えるとかのが良いんですけど。
個人的には。
家のアイコンは、サイズを小さくしてるんで、ショートカット用の小さい矢印?が、
見えないので…。(実行ファイルを、デスクトップに置いてる物がある。)


To: 土屋 さん

> 『暗号化スクリプトの復元はVBScriptでも可能だった』
> ということで、面白いサンプルがありました。
> http://www.internetclub.ne.jp/TECH/Ztoday/2001/010116.html

ややっ、見つけましたね。
所で。そのサンプルは、自分自身をデコードできないようにしてる見たいですが。
例のVB製デコーダに掛けると、どうなるんでしょうねぇ?(笑)


> デモ版?ですが、できるんですねえ。簡単に。

出来ますよ、誰でも簡単に。
サンプルが有れば…。(謎)


土屋 さん 2001年 08月 10日 17時 10分 47秒

『WSH専用のエディタ「WSHEditor」の大公開』
というのを見つけました。
http://www.internetclub.ne.jp/TECH/Ztoday/2001/010130.html
VBで作られたものです。
色分けがあると面白いんだけど。

同じサイトで、
『暗号化スクリプトの復元はVBScriptでも可能だった』
ということで、面白いサンプルがありました。
http://www.internetclub.ne.jp/TECH/Ztoday/2001/010116.html
デモ版?ですが、できるんですねえ。簡単に。

イチロー さん 2001年 08月 10日 17時 03分 22秒

はじめまして。初歩的な質問でスミマセン。
現在の日付けと時刻をファイルに書きこみたいのですが
何か方法はありますか?

Lib30 さん (lib30@write-off.f2s.com) 2001年 08月 10日 16時 39分 58秒
URL:http://www.ob.aitai.ne.jp/~kazoo/

最近CでCGIをやるのに挑戦しています。大学にはいると情報処理の授業でやるらしいので、
それなら大学に入る前にマスターしようと思ったのですが、なかなかむつかしいです。
というか、パソコンばっかりやっていて勉強をあまりしていません。大学に落ちたら本末転倒やな。


> PerlScript

以前Perlをほとんど知らないのに使ってみようと挑戦してみたことがあります。
でも行末に「;」を必ず付けないといけないということを知らず、スクリプトが
動かなくて悩みました(JavaScriptは付けても付けなくてよいから)。

ちなみにデフォルトではローカルでしか使えませんが、
HKEY_LOCAL_MACHINE\SOFTWARE\ActiveState\PerlScript\1.0\EnabledZones
の値を「 1(0x00000001)」にすると、ネットワーク上のHTMLファイルに記述された
PerlScriptも実行できるようになるらしいです。



> > P.S.そちらは猛暑、夏ばて気味だそうですね。こちら(本州最果の地)は、冷夏です。日中でも23℃前後かな? 涼しさを通り越して、寒いくらいです。
> > (すいません)
>
> いいですねぇ〜。
> こちらは夏が日本一暑い、というかすごしにくい地域です。

こっちはむちゃくちゃ暑いです。先日39.9度を記録し、日本一暑い町としてニュースで流れました。
というか、温度計の場所が悪いです。温度計は家から1kmほどはなれた消防署の駐車場にあるらしく、
道路のそば、アスファルトの真上というかなり暑そうなところにあります。
でもどっちにしろかなり暑いです。


pokopon さん (pokopon@jomon.ne.jp) 2001年 08月 10日 13時 07分 30秒

To:むたぐちさんへ
訂正です。
>3.ドメイン名はWin95/98系は、やはりレジストリから拾う
>  HKEY_LOCAL_MACHINE\Network\Logon\PrimaryProvider

改め

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSNP32\NetworkProvider\AuthenticatingAgent

こちらでした。この値は、ネットワークコンピュータのプロパティーで設定するMicrosoft ネットワーククライアントのプロパティーでNTドメイン名が格納されているところです(多分)。
LOGONの際に規定値以外の値(他ドメイン名)を入れると、こちらも変更されます。こちらの値を拾った方が確実かと思いました。
(前回のは早合点かも?)

チョコ さん 2001年 08月 10日 10時 27分 18秒

To:筑集眺餅 さん

レスありがとうございます。m(_ _)m

>>実作業としては、c:\OK.BATがあれば、このバッチ(OK.BAT)を実行して、
>>無い時にはC:\DATA\CHANGE.BATを実行させようとしています。
>>ThenやElse以降の記述に、何か規定はあるのでしょうか??

>これなら、素直に全部バッチでやるというのはいかがでしょか?


今まではバッチを用いていたのですが、MSが16ビットアプリの動作保証をしない??

という様な事を聞いていたのと、スタートアップにバッチを入れておくとサウンド

ドライバ(WDM)が正常にロードされずに音が出なくなるという障害事例があったので、

こんな簡単なものにでもバッチは使いたくないというのがWSHを使う理由でした。

すみません。

matu さん 2001年 08月 10日 06時 14分 02秒

To: むたぐち さん

> HTMLヘルプのことはあまり知らないのですが、普通のHTMLを<object>で
> 拡張したものみたいですね。
>
> ところでコンパイラってフリーで配布されていましたっけ?

どうも。

コンパイラは、こちらからダウンロードできます。

Microsoft HTML Help Downloads
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp

コンパイラはコマンドラインでも動かせますし、プロジェクトファイルも
iniファイルみたいな書式のテキストファイルなので、コンパイルまで自動
化できそうです。

pokopon さん 2001年 08月 10日 04時 00分 36秒
URL:pokopon@jomon.ne.jp

To:むたぐちさんへ
>うーん、28-15で全部書いたつもりなんですがねえ(^^;
WinのOSを得る方法について、過去記事から、
>kernel32.dllのバージョンを調べる方法の方がいいと思います。
>これなら確実です。
>GetFileVersionメソッド自体が、Windows Script5.0くらいで追加されたものなので、
>素のWin98とかでは動作しないのが難点ですが。
は理解しておりました。
ただ、
我が職場の機器には、まだ古いWin95があります。  (^^ゞ (さすがにDosやWin3.1はありませんが)
ですのでこの方法には、ためらいがありました。GetFileVersionが使えない事を想定してです。

ということで、むたぐちさんの方針に逆らって申し訳ない? のですが、m(__)m

1.やはり危険をかえりみずに環境変数を調べ、その値でWinNT系かそうじゃないかを判断
  調べる環境変数は何でも良いのですが、プロセスでWshSysEnv("OS")を調べ、「NT」が含まれていればWinNT系、それ以外ならWin95/98/Me系(通常はヌルですが、あえてNTを含む値を設定することは.....ないでしょうから)

2.その後で、
WinNT系以外なら:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
WinNT/2Kなら  :HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion
 で、OS名を得る(バージョンも含め)。          ↑  ここにありました
3.ドメイン名はWin95/98系は、やはりレジストリから拾う
  HKEY_LOCAL_MACHINE\Network\Logon\PrimaryProvider
 多分、これがドメイン名だと思うのですけど(ドメインに参加していなければヌルでしたし、参加していればドメイン名が入っていました。)
  WinNT系はWshNetwork.UserDomainからきちんと??得る。
4.WinNT系のセキュリティーでレジストリが読めないときには(エラーの時)、あっさりとあきらめる

また、LOGON中のエラーについてですが、NT系ならでません。先にLOGONが終了しているからでしょうか?
Win95/98系なら、LOGONスクリプトが終了(というか同時進行)してから正式なLOGONかも?
このへんはよくわからなかったので、ご指摘の通りにOn Error Resume Nextでループを組む事にしました。
無限ループにならないように、カウンタをつけ、一定数ループしたらExitするようにし、最悪の状態は回避しました。

こんな対応にさせていただきます。ご指導ありがとうございました。

今回はいろいろと勉強させていただきました。NTサーバーへのLOGONスクリプトを作成していましたが、ほぼ完成できました。

でも、まだ解決できていない問題もあります。WSHとはあまり関係ないのですが、LOGONスクリプトをDOSバッチで実行すると、DOS窓がでますよね(Win2Kでは最小化で実行されますが)。Win95系で、このDOS窓を表示させないでスクリプトを実行させられません。

start /m バッチ名 で対応しようにも、サーバーにあるユーザーのLOGONスクリプトの記述を直さなければなりません。
LOGONスクリプト実行ファイルである lmscript.exe のpifファイルを「最小化」に設定するも、いちいちクライアントの機器を設定して歩かなければなりません。
一発で、簡単に実現する方法を見つけられないのですよ。
WSHで制御しようにも、実行DOSバッチファイルの名前が個々で違いますので、制御できますかどうか。


>いいですねぇ〜。
>こちらは夏が日本一暑い、というかすごしにくい地域です。
TVのニュースで聞いていました。大変そう!! こちらも「冷夏だ」とニュースになっていました。
ちなみに、こちらの地方独特のこの冷たい浜風を「やませ」といいます。今日も「半そで」じゃ鳥肌が立つくらいでしたよ。エアコン?? いりません。 八甲田の方では「ストーブ」という噂も?

長くなりました。すいませんでした。 次からは、簡潔に書きます。


管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2001年 08月 10日 01時 40分 25秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

おお、書き込み数が凄い。
盆休み前ラッシュなのかな?

Hi-HOのADSLですが、さきほど「緊急告知」なるメールが届いたんですが、
接続料金が値下げされ、5,280円/月→3,167円/月となるそうです。
いやあ、やはりそうなりましたか。実は、先日5,800円/月→5,280円/月に
値下げになったんですが、さすがにこれではYahoo!BBに太刀打ちできないと
悟ったんでしょうね。
それにしても、ADSL回線が高速化(480kbps→1.5Mbps)してからというものの、
回線の切断は一度しかなく、めちゃくちゃ安定しています。
ほぼ1ヶ月間固定IPを保ったことになります。

導入当時は不満だらけだったんですが、今となってはいい思い出です(^^;


To: たる さん

> >PerlScriptって、VBSやJSと違って、ファイル操作とかも可能なんですよね?
> はい。他にもモジュールuseすればいろんな事が出来ます。
> APIもたたけます。

うーむ…。そうなんですか。
ちょっと不安ですね。
私はインストールしていないので問題なしですが。

> ただ、ActivePerlがインストールされていない環境で
> <script language="PerlScript">
> $window->Msgbox("string");
> $window->alert("string");
> </script>
> とかを実行するとIEが強制終了します(スクリプトサンプル自体には意味はないです)。ぜひお試しを。

これは大丈夫でした。(Win2000sp2+IE5.5sp1)

> IE3の頃のオブジェクトモデル(確かその頃はSOMって言ったっけか)なんて
> 本読みながらでないとむづかしくて使えません。(私が物覚え悪いだけか(自爆))

SOMってなんの略でしょうね。

> 任意のタグの中にイベント表記できない
> とかその他にもいろいろな制限があります。

DHTMLがまだ現在の形になっていなかったわけですね。

> Cscriptで使うと言うことなのですが、perl直渡しよりあまり利点を感じないのです。
> 私は上記のことを知ったら怖くなったので、すぐさまplsの関係付けだけは消してしまいました。

plsの関連付けを消しても、ActiveX ScriptエンジンとしてのPerlScriptはシステムに
残ったままじゃないかと思うのですが、大丈夫でしょうか。

> なので素直にWin32::OLE->new(ProgID)しましょう。←PerlでのCreateObject表記

Perlでも普通にCOMが使えるんですね。
あ、今思い出したんですが、WSHを介する利点が一つだけあります。
それは、WScript.CreateObjectやConnectObjectを使って、COMオブジェクトの
イベントにバインドすることができると言う点です。


To: pokopon さん

> 直接得る方法はないようですね。レジストリに発展するのならと、regeditで調べてみました。

kernel32.dllのバージョンを調べる方法の方がいいと思います。
これなら確実です。
ただし、スクリプティングランタイムのバージョンに依存します。
(GetFileVersionメソッドが実装されているかどうか)

> そしたら、
> HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Windows\CurrentVersion
> にある一連の値
> Version VersionNUmber SubVersionNUmber
> が使えるのかな? 我が家はWin98ですが、一応正しい情報でした。
> 他のOSの場合も同じところにあるのでしょうか?

Win2000にはないです。

> 確認しようがありませんけど、どなたかレポートしていただければ....

うーん、28-15で全部書いたつもりなんですがねえ(^^;

> 1.きちんとネットワークに参加していなければ、エラーがでます。回避する方法は?
>  LOGONスクリプトにてWHSを動かしてドメイン名を表示させようとしていますが、LOGONが完了していなければエラーとなります。

On Error Resume Nextしかないかと思います。
エラーが出なくなるまでループするとか…。

もしくは、ドメイン名をレジストリから直接取得するとか…。
# 該当キーがどこなのか、知らないのですが。

> 2.きちんとドメイン名が得られるのはWinNT系だけのようです。Win95/98系では「ヌル」となります。どうしてでしょう?

これは私にもわかりませんが、そもそもWSHはWinNTのログオンスクリプトで
使用されることを想定して誕生したという経緯があり、そのため、Win9xでは
動作しない、あるいは希望どおりの動作にならない例が多々あります。
一例としては、WshEnvironmentオブジェクトのRemoveメソッドがあります。
(詳しくはLesson11や7-48 管理人むたぐち 2000-01-18 18:19 を参照してください)

> P.S.そちらは猛暑、夏ばて気味だそうですね。こちら(本州最果の地)は、冷夏です。日中でも23℃前後かな? 涼しさを通り越して、寒いくらいです。
> (すいません)

いいですねぇ〜。
こちらは夏が日本一暑い、というかすごしにくい地域です。


To: matu さん

> HTML Help Workshopで、プロジェクトファイルを作成し、スクリプトで作成した.hhc
> ファイルを指定してコンパイルします。

ありがとうございます。
HTMLヘルプのことはあまり知らないのですが、普通のHTMLを<object>で
拡張したものみたいですね。

ところでコンパイラってフリーで配布されていましたっけ?


To: たる さん

> WSHのコードだけでOLEDBへアクセスできますので、そちらのほうがODBC経由しない分
> パフォーマンスも良いですしお勧めします。

> このサンプルは新規作成用なのでADOXを使っていますが
> 運用ならADOのコネクションオブジェクト.Openメソッドで同じ接続文字列をいれてやれば出来ます。

わー、私には全然意味がわかりませんが、ありがとうございます(^^;


To: 梨 さん

> 「DateLastAccessed」だと値が取得できるのですが
> なぜか「DataLastModified」だと値が取得できずに
> プログラムが途中で止まってしまいます。

DataじゃなくてDateじゃないですか?

もしこれが単なるtypoだとすると、最終更新日時が「不明」であるという
ことはないでしょうか。
あまり記憶にないのですが、「不明」の場合、エラーになったような気がします。
その場合、On Error Resume Nextで回避するしかないかもしれません。

> 尾鷲 → お世話
> でした。すみません。m(_"_)m

なるほど、「おわせ」ってわけですね。


To: チョコ さん

> 実作業としては、c:\OK.BATがあれば、このバッチ(OK.BAT)を実行して、
> 無い時にはC:\DATA\CHANGE.BATを実行させようとしています。
> ThenやElse以降の記述に、何か規定はあるのでしょうか??

とりあえず、VBSのヘルプとWSHのヘルプをMicrosoftのサイトから
落として、眺めてみることをお勧めします。
が、一応ここでは正解を載せておきます。

Set Fs=WScript.CreateObject("Scripting.FileSystemObject")
Set WshShell=WScript.CreateObject("WScript.Shell")
If Fs.FileExists("c:\OK.BAT") Then
WshShell.Run "c:\OK.BAT"
Else
WshShell.Run "C:\DATA\CHANGE.BAT"
End If

でも、筑集眺餅さんがおっしゃるとおり、バッチだけで
完結させた方が簡単だと思いますよ。


To: 土屋 さん

> そっかぁ。PING走らせるときは、DOCコマンドをShellで走らせればいいだけだったんだぁ。(今ごろひとりで納得)
> (とすると、FTPもできるのかなあ)

どもども。いつもスクリプトのご提供、ありがとうございます。
FTPは以前取り上げたことがあります。
2-36 管理人むたぐち 1999-10-06 20:38

> あ。DOCぢゃなかった。それと、objFileはobjFolderのつもりでした。

DOSですね。黙っていたら気づかないのにー。

> それでせっかくなので、2000サーバーの登録ユーザーをADOを使って読み取って、一覧をエクセルに書き出してみました。

へー、ADOってそういうこともできるんですね。
ADSIと連携しているんですね。

> メモ帳で読み込まずに、そのファイルをFileSystemObjectで読み取る手もあるのではないかと。

WSH2.0までならそれしか方法がないと思います。

WSH5.6のWshShell.execメソッドを使えば、コマンドを実行し、その標準出力を
ファイルに落とさずそのまま取得することができます。
http://www.asia.microsoft.com/japan/developer/workshop/languages/clinic/scripting11132000.asp (dirの出力を取る例があります)

だれかこの機能を使って、Win2000にchoiceコマンドを実装してみよう!


To: 筑集眺餅 さん

> これなら、素直に全部バッチでやるというのはいかがでしょか?
>
> IF EXIST C:\OK.BAT GOTO OK
> CALL C:\DATA\CHANGE.BAT
> EXIT
> :OK
> CALL C:\OK.BAT
>
> ダメ?

WSH Lab.管理人的にはダメです(笑)
まあ、これくらいの処理なら、バッチだけでも十分組めるということですね。
むしろ、OK.BATとかCHANGE.BATのWSHスクリプト化を試みてはいかがでしょう。> チョコさん


To: いちにい さん

> その方が、便利じゃないですか?
> って、自分は、あの辺りを触ること無いですが。

私はそうは思わないんですよ。
コンポーネントの登録情報とかをユーザーがいじる必要ってないと思いません?
というか、下手にいじるとやばいことになりますよね。
ユーザーごとの設定情報などは、ある程度いじることもあると思うので、
完全にインターフェースを分けちゃった方がいいかと思っているわけです。

> で、ツールを探して、RegCleanを見つけたときには、(VBに付いてるらしい。笑)

VBについているんですか?
…あ、VBってウィルスバスターですか。

> ”「〜へのショートカット」を取り除く” コレ、頂きました。
> こりゃ良いですね。
> 最近は、面倒なんで、そのままですが、以前は、手動で遣ってました。
> 因みに、家の画面は、6割方、ショートカットに占領されてます。(笑)

こういう50行未満のちょっとしたスクリプトが、実はWSHの真骨頂を発揮する分野だと
思うんです。さくっと作ってさくっと使う、というのが私の理想。
# だから使い捨てになることも多いんですけどねえ。

Win2000なら、TweakUIを使って、最初から「〜へのショートカット」が
つかないようにすることもできますけどね。

つーか、日本語でやられるから冗長に感じちゃうんですよね。
英語版Windowsでは、"Shortcut to hoge" って感じになるのかな? それなら許せる(笑)

いちにい さん 2001年 08月 09日 23時 52分 43秒

To: 管理人むたぐち さん

> いや、そうなんですが、どちらもregedit.exeで等価にアクセスできるでしょ?

その方が、便利じゃないですか?
って、自分は、あの辺りを触ること無いですが。


>> 何とかして、要らないクラス情報を消せないだろうか?
>> scanreg では消えないし、RegCleanを使うと何故か上手く行かない。
>> どうして?(笑)
> scanregってそういう機能はないですよ。
> たしか、消したレジストリキーの残骸を完全に消去してレジストリサイズを減らす
> のが、scanreg /fix の効果だったと。

ですね。
で、ツールを探して、RegCleanを見つけたときには、(VBに付いてるらしい。笑)
コレだよ!コレ!って思ったんですが、動かないんです。(泣)


>> 家の場合は、スクリプトで自動化してる作業って無いんですよね。

> 私の作ったスクリプトも、もしよかったら使ってください(死)

はい。
”「〜へのショートカット」を取り除く” コレ、頂きました。
こりゃ良いですね。
最近は、面倒なんで、そのままですが、以前は、手動で遣ってました。
因みに、家の画面は、6割方、ショートカットに占領されてます。(笑)
一時期、殆ど埋まって、ウザイので、消しましたが。


Return