
複数の機械(PC-9821 V12;Win95; FMV S3 20;Win95, FMV ME3/505;Win98SE, DELL XPS R450;Win98SE, Aptiva573;Win98, Gateway G6-200;Win95)で実行状況を見ています(Win2000は使えなくなった)。
開発は ME3/505 で行い他の機械で動くかどうかを調べています。
参照設定は
Visual Basic For Application
Visual Basic runtime object and peocedures
Visual Basic object and procedures
OLE automation
の4つです。
バージョンは
Microsoft Visual Basic 6.0(SP5)
For 62-bit Windows Development
です。
現時点で配布可能な形体にする方法が分からないので
RedHouse氏のVisual Basic 6.0 SP5 ランタイムライブラリ
http://www.vector.co.jp/soft/win95/util/se188840 …
を使用しています。
先に書きました通り、ADO, DAOは使用していません。使い方がわかりません(下記参照)。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=683267
しかし.なぜか.
実行時エラー '429'
ActiveXコンポーネットはオブシェクトを作成できません。
が発生します。
すべての機械にVisual Studio をインストールすればよいかもしれません(使用者・所有者がすべて同一人物ですから法律上の問題はないでしょう)が、言語を取り扱う機械は通信回線を切断しておきたい(ウイルス対策)のです。
Visual Studioを導入することなく、すべての機械でEXEファイルコピーだけで動作するようにするには、どのようなことをしたらよいのでしょうか。
なお MDAC 2.7 SP1(下記回答内参照アドレスよりDl)を実行しましたが
http://oshiete1.goo.ne.jp/kotaeru.php3?q=510091
と同様に動かない機械では dao360.dll が存在しません。
No.9ベストアンサー
- 回答日時:
>おかげさまで、インタープリターで再現できました。
>バッチ処理とファイルシステムが同居しているとは、恐れ入ったOSです。
バッチ処理にファイルシステムが同居してというとちょっとニュアンスが違うような。
様々な機能を呼び出すことができる機能をバッチ処理が持っている
ということになります。
今回はaramanantoさんが知らないうちに、ファイルシステムの情報を
取得する機能を使っていたということになります。
CreateObjectでActiveXを呼び出している時点で
別のアプリをコールしているようなものです。
DOSでいう外部コマンドのような感覚ですかね。
>C:\windows\, C:\Windows\System はレジストリから取得可能ですが、
>他の情報取得の見込みが立っていません。
>DriveListBoxが取得可能な情報緯度は何かの手段が残されているものと考えています。
>一部取得方法(GetSystemDirectory, GetTempPath, GetVolumeInformation)が
>掲載されていたサイトがかりましたが.該当方法は文法エラー等で動きません。
WindowsAPIのコールになります。
http://www.vbvbvb.com/jp/gtips/0501/gGetSystemDi …
http://www.vbvbvb.com/jp/gtips/0101/gGetTempPath …
http://www.vbvbvb.com/cgi-bin/namazu.cgi?query=G …
Declare Functionの宣言をされていないのでは?
>C:\windows\system\scrrun.dll が関係しているまでは追跡できましたが.
>どこまでレジストリを変更すれば動作するのかは不明です。
scrrun.dllはWindowsScriptを実行するために必要なDLLのうちの1つです。
WSHの本体はこれではないです。
>つまり、通常システム領域から削除し、実行するときに限って複写、
>レジストリーを操作して実行可能な状態にし、実行し、
>実行終了時に元の状態に戻す方法です。
なので、これだけでは無理かと。
>WindowsScriptは、外部オペレーターが作成したバッチ処理をオペレーターの
>介在なしにユーザーとして実行できる危険極まりない処理機構です。
危険であるかわりに便利です。
どちらをとるかですね。
ただし、あくまでもローカルで実行したときのみ様々なことができます。
また、WinNT系のOSでは、適切なユーザ権限がないとすべての処理は行えません。
#Win9xでは権限がないところに問題がありますが。
>ですから、インターネットに接続する場合には原則として導入していません。
これは無理でしょうね。
Windows98以降にはOSの一部として標準で組み込まれています。
サイトのコヒーては動きませんでした。見本ファイルの内容は動きました。複写方法に問題があったようです。交換可能媒体情報が取得可能になりました。
システムディレクトリ名は
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup]
より、作業ディレクトリ名は
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\VolumeCaches\Temporary files]
より取得可能のようです(レジストリから読むルーチンを作成)。
デバイス名と媒体種別に関する内容は
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup]
より最終ドライブ名が
GetDriveType(strRootPathName$)
より関係情報が取得できました。こちらはDLしたファイルにコピーしたら簡単に動作しました。
>Windows98以降にはOSの一部として標準で組み込まれています。
Windows98SEの場合簡単にバッチ処理を切断できます。
マイコンピュータ
コントロールパネル
アプリケーションの追加と削除
内
Windowsファイル
ファイルの種類の白枠内
アクセサリー
右下の
仔細
Windowsスクリプティングホスト
の頭の□内レを消して
下の方の
OK
戻ったところで
OK
これで再起動して、意図的に障害を Visual Studio インタープリターで再現できました。
Windows95では、Visual Studio を導入すると同じようなファイルが作成されます。
C:\Windows\WSCRIPT.EXE,C:\windows\command\cscript.exe, C:\windows\sysytem\内 scrrun.dll, wshom.ocx, wshext.dll ですか。
Windows95では、Visual Studioを導入するとこれらファイルが増えます。JAVAのバージョンアップがどうのうこうのというメッセージが表示されますので、こちらが関係しているものと思われます。
No.10
- 回答日時:
>システムディレクトリ名は
>[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup]
>より、作業ディレクトリ名は
>[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\VolumeCaches\Temporary files]
>より取得可能のようです(レジストリから読むルーチンを作成)。
すでに動いているようなので、参考までに・・・
WinXPで見てみましたが、[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup]
にそのような情報は書かれていません。Windowsのインストール媒体の位置の情報のはずです。
tempフォルダも、そのレジストリはあくまでもexplorer.exeが使うのであって、そこがシステムとして使用しているというわけではないです。
#指すフォルダは同じだと思いますけど。
>指すフォルダは同じだと思いますけど。
ご指摘のとおりです。「同じ値が得られる」ので使用することにしました。
WinDir=
SysDir=
とexplorer.exeの
folder=
より取得しています。
No.8
- 回答日時:
>Set fs = CreateObject("Scripting.FileSystemObject")
"Scripting.FileSystemObject"ですが、
これはWSH(Windows Scripting Host)のモジュールを必要とします。
WindowsScriptについてはこちら。
http://www.microsoft.com/japan/msdn/scripting/de …
aramanantoさんの環境では、Win95のマシンがターゲットにあるのが微妙です。
現在、Win95はMicrosoftによるサポートが終了しているため、
Win95用として配布されているWSHはありません。
http://www.microsoft.com/downloads/results.aspx? …
おそらくWin98用のWSH5.5で平気だと思いますが。
これが可能でも、InternetExplorerのバージョンにも依存するはずです。
これも、Win95にインストール可能な最新バージョンである
IE5.5SP2の公開が終了してしまっています。
#幸い、VisualStudio6.0にはIEの以前のバージョンのものがCD-ROMに含まれていてインストール可能ですが。
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/install …
ここのページによると、DCOMが入っていればいいようなことが書いてあるのでDCOM入れれば平気なのかもしれません。
未確認です。
http://www.microsoft.com/downloads/details.aspx? …
この回答への補足
おかげさまで、インタープリターで再現できました。
バッチ処理とファイルシステムが同居しているとは、恐れ入ったOSです。
C:\windows\, C:\Windows\System はレジストリから取得可能ですが、他の情報取得の見込みが立っていません。DriveListBoxが取得可能な情報緯度は何かの手段が残されているものと考えています。
一部取得方法(GetSystemDirectory, GetTempPath, GetVolumeInformation)が掲載されていたサイトがかりましたが.該当方法は文法エラー等で動きません。
C:\windows\system\scrrun.dll が関係しているまでは追跡できましたが.どこまでレジストリを変更すれば動作するのかは不明です。つまり、通常システム領域から削除し、実行するときに限って複写、レジストリーを操作して実行可能な状態にし、実行し、実行終了時に元の状態に戻す方法です。
WindowsScriptは、外部オペレーターが作成したバッチ処理をオペレーターの介在なしにユーザーとして実行できる危険極まりない処理機構です。ですから、インターネットに接続する場合には原則として導入していません。
使用しない方向で対応を考えています。
No.7
- 回答日時:
>CreateObjectって使ってませんか?
4個所1ルーチンで使用しています。
引数に指定している文字列は何でしょう?
おそらく、ここで指定してるActiveX DLL or ActiveX EXEが
存在しないために、
"ActiveXコンポーネットはオブシェクトを作成できません。 "
が発生していると思われます。
この回答への補足
>引数に指定している文字列は何でしょう?
Set fs = CreateObject("Scripting.FileSystemObject")
WinDir$ = fs.GetSpecialFolder(0): 'c:\window
SysDir$ = fs.GetSpecialFolder(1): 'c:\window\system
TmpDir$ = fs.GetSpecialFolder(2): 'c:\window\temp
によるシステム系ディレクトリ3箇所の取得
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(drvpath)
DevTyp& = d.DriveType
Select Case DevTyp&
Case 0: t = "不明"
Case 1: t = "リムーバブル ディスク"
(以下略)
によるデバイス(drvpath)の種類の取得です。
交換可能な媒体であるか、HDDであるか、その他デバイスであるか、等によって返す引数が異なり3種類のルーチンが存在します。
No.6
- 回答日時:
>どうやって消しました?
>ファイルを削除しただけなのではないですか?
>特に、C:\Program FilesのファイルやC:\Windowsのなかとか。
特に消し方には問題なさそうです。
確認ですが、プログラムの中で、CreateObjectって使ってませんか?
あと、プログラム自体は起動できているでしょうか?
プログラム起動時に一番最初に呼ばれる個所にメッセージボックスを表示する等して確認してみてください。
この回答への補足
>CreateObjectって使ってませんか?
4個所1ルーチンで使用しています。
>起動できているでしょうか?
起動しています。一部起動直後に動かなくなるソフトもありますが
>メッセージボックスを表示する
方法がわからないのでこの方法では試せませんが、コンパイル言語の共通な虫取り方法として、「特定のファィルに実行中のルーチン名をかき出す」という方法があります。
Fotran では90-95を使っていましたが、VBでは490番台を使っています。
これによると初期化ルーチンはきどうしているようです
ただ、最後の方が切れる場合があり、どの時点でとまっているかはわかりません。
No.5
- 回答日時:
>最初に言語を使用しているME3/505のシステム構成を説明します。
いきなりシステムといわれても・・・(^^;
一般に通用しない単語は出されても<ME3/505
で、tarataraってなんですか?いろいろ説明かかれてますけど、必要な情報が欠如しているのですが。
BookMarkはなんとなくわかりますけど。
>残る2つはどちらもシステムを導入して,直後にデバイス関係を除くほとんどのソフトを消しています。
どうやって消しました?
ファイルを削除しただけなのではないですか?
特に、C:\Program FilesのファイルやC:\Windowsのなかとか。
この回答への補足
>tarataraってなんですか
私が作ったソフトの起動関係lnkファイルを入れてあるディレクトリ(と呼んでよいか疑問)です。私の愛称かタラで、タラタラとよく呼ばれています。
C:\window\スタートメニュー\プログラム\taratara\
一応システムの内容通り半角カナで入力しましたが.gooが自動的に全角に書き換えてくれるはずです。
BookMarkは作ったソフトの名称です。
>どうやって消しました?
複数の方法があります。
1.
スタート
プログラム
(適当に選んで)
アンイストール
と選択。しばらくして「終わった」という旨のメッセージが出たら、再起動。
2.
コントロールパネル
アプリケーションの追加と削除
(白枠内を適当に選んで)
追加と削除
(OKとかアンインストール等のメッセージが出たら.OK・継続・アンイントロール等を)
(共有ファイルがどうのこうのというメッセージが出たら.残す又は全部のコス)
「終わった」旨のメッセージが出たら再起動。
3.
コントロールパネル
アプリケーションの追加と削除
Windowsファィル
白枠内の四角の「レ」を消したり.「子細(なんとか)」内の「レ」を消して、
OK
そのうち「再起動します」というメッセージが出るので再起動。
以上全部終わったらば.「消せませんでした」と表示されたディレクトリ(以前10時間かけて一覧表を作りました)をまとめてエクスプローラーで削除。ただしC:\Windows\以下は1例外を除き全部残しています。
例外はc:\windows\AOLBak.exe、AOL社とのオンラインプロバイター契約のためのソフトです。
C:\windows\Options\Cabs
内にも残っていますがこちらは残しています。
ディスクトップに消したファイルのlnkファイルが残っているので、まとめてごみ箱に(間違えて残っているソフト関係を消してしまった事があったので全部消してから行っています)。
リカバリーだけで2時間、プリンター等ドライバー導入と電源自動切断停止等のシステムの設定に30分、先に記載した消す作業に2時間、ファイル領域の連続化に多分30分から1時間(寝てしまうので時間が分かりません)かかります。
数日後暇になったときに、レジストリエディタを起動して消したソフト関係と思われるレジストリを削除しています。これは暇を見てしますので、通常はVisual Studioを導入する場合ぐらいしかしません。
C:\Progrom Files\内では先の方法で消したファイルと同じディレクトリ以下に存在するデータファイル等を消します。こちらは、どのファイルがどのプログラムに対応しているかを適当に動かしてタイムスタンプの変化から追跡して一覧表を作成してあります。こちらは1ヶ月くらいかかりました。使う予定のないソフトを動かすことは苦痛以外の何者でもありません。FS.EXE でリストを作り比較して行くだけです。
No.4
- 回答日時:
プロジェクト→コンポーネント
プロジェクト→参照設定
不要なものは外す。
この回答への補足
参照設定の
Visual Basic For Application
Visual Basic runtime object and peocedures
Visual Basic object and procedures
OLE automation
の4つは、導入直後の状態を維持しています。どれが不要かわからないのですが、要・不要を判断する方法はどのようなものがあるのでしょうか。
「要不要の判断方法」に関する話題については次回以降、機会がありましたらばご指摘いただけましたらば幸いです。
2-3日以内にこのサイトに接続した時点で締め切ります。
ご指摘ありがとうございました。
No.3
- 回答日時:
>該当ソフトの起動方法と関係ヘルプファィル名(*.ch*等)をお知らせください。
[スタート] → [プログラム(P)] → [Microsoft Visual Studio 6.0] → [Microsoft Visual Studio 6.0ツール] → [ディストリビューション ウイザード]
ヘルプは起動後表示される画面のヘルプボタンを押してください。
この回答への補足
最初に言語を使用しているME3/505のシステム構成を説明します。
ME3/505で関係するHDDは3つあります。
1つは内臓で CD-ROMとつながっています。IDEのサブのセカンダリなので起動しません。Dドライブになります。
残る2つはどちらもシステムを導入して,直後にデバイス関係を除くほとんどのソフトを消しています。残っている内容は Acrobat, DAO, モデム, ディスプレイ, IEと RealPlayer 位です。Windowsファイルも残っているのはアクセサリ内ペイント・システムツール・マルチメディア・ユーザー保護・通信です。増設機器としてプリンター・MO・LANがあります。LANはあるだけ程度です。まだ資源管理ソフトを作成していませんから。
片一方には Visual Studio と各種ユーティリテイ(各社辞書等・圧縮解凍等)が入っています。こちらは自己メールアドレスを取得するルーチンを作成した関係で Outlookが残っています。
もう片一方は,インターネット接続関係ソフトとファイル圧縮解凍が入っています。
両者とも,リカバリーの関係(富士通の指示として増設機器を全部取り外してリカバリー。リカバリー終了後機器接続)で2つの領域に分割されています(C:, E:に相当)。
以上はIEのお気に入り・NEのブックマークを整理し局所ファイルを作成するというプログラムを作成している為です。
プライバシーの保護の観点からユーザー名等はタレント・政治家・犯罪者等の有名人が設定されています。大体月1回程度再導入を行なって変更しています。ひとつの物事が終われば再導入をして古い内容を消すことで(JIS用語としての)プライバシーを保護しています。
マイクロソフト社がこのあたりのへんな細工をしているのではないか,という感じがして来ました。
前所有者が IE を導入できなかったという理由で私の所にVisual Studioが回って来たのであり,問題が続くパッケージです。以下が実行結果です。
電源on
Windows へようこそ --OK
スタート内
プログラム(P)内
Microsoft Visual Studio 6.0内
Microsoft Visual Studio 6.0ツール内
ディストリビューションウィザード
参照(B) -- D:\bas\BookMark\Project1.vbp --開く(O)
パッケージ(P)
次へ(N)
次へ(N)
D:\bas\BookMark\が表示されているのでそのままにして
次へ(N)
フォルター.......続けますか -- はい(Y)
含まれるファイル そのままにして
次へ(N)
Cabファイルオプション 単位置のCabファイルが表示されているので,そのままにして
次へ(N)
インストール時のタイトル BookMark が表示されているのでそのままにして
次へ(N)
初回起動時に taratara内BookMarkを設定したが,この設定が残っている。そのままにして
次へ(N)
セットアップ先の内容をそのままにして
次へ(N)
共有ファイルのしていは,□内をそのままにして
次へ(N)
完了
パッケージレボートをそのままにして
閉じる
ディストリビューションウィザードの起動直後の表示に戻ったので
閉じる
スタート内
Windowsの終了内
電源を切れる状態にするを指定して
OK
電源が切れで30秒ほど待って
HDD交換。
電源on
Windows へようこそ --OK
スタート内
プログラム内
エクスプローラー
D:¥BAS¥BookMarkを選択して
Setup.exeを指定。直後に(X)を押してエクスプローラ終了
OK
セットアップ開始のボタン
前回使用した taratara がのこっているのて,そのままにして,継続
完了しましたと表示されて OK
スタート内
プログラム内
taratara内
BookMark
で起動。
実行時エラー 429
Active X コンポーネネントはオブシェクトを作成できません
となり,結果が代わりません出した。
BookMark.exe を削除,再導入で変化無し。相変わらずエラーがでます。
No.2
- 回答日時:
これってVBアプリですよね。
で、バージョンのところももちろん32bitですよね。>現時点で配布可能な形体にする方法が分からないので
デストリビューションウィザード。
これを使ってインストーラを作成してください。
>Visual Studioを導入することなく、すべての機械で
>EXEファイルコピーだけで動作するようにするには、
>どのようなことをしたらよいのでしょうか。
VBで作成する限り、全ての環境でEXEコピーだけで
動作させるのは不可能です。あきらめましょう。
インストーラを使ってランタイムを含めてインストール
したあとは、EXEファイル等のコピーによる上書きで
動くこともあります。
#もちろんだめなときもあります。
この回答への補足
>デストリビューションウィザード。
>これを使ってインストーラを作成してください。
該当ソフトの起動方法と関係ヘルプファィル名(*.ch*等)をお知らせください。
No.1
- 回答日時:
こちらの5.は参考になりませんか。
http://www.moreexcellent.com/excel/trouble/macro …
参考URL:http://www.moreexcellent.com/excel/trouble/macro …
この回答への補足
実行結果は以下のとおり。
5.「実行時エラー429...」よりバッチファイルを作成
c:Regsvr32.exe /U "C:\PROGRA~1\COMMON~1\MICROS~1\DAO\DAO350.DLL"
c:Regsvr32.exe "C:\PROGRA~1\COMMON~1\MICROS~1\DAO\DAO350.DLL"
を実行。正常終了らしきメッセージを表示。
dos窓を閉じて再起動。関係ソフトを実行しましたが結果は変わらず。
なお.関係2ファイルの位置は T.Nakamura作高機能ファイル検索ユーティリティ PC9801/21 Version 1.2a (なぜかDOS/Vでも使えて便利)より
cd c:\
FS dao350.dll >D:\aaa.bat
FS Regsvr32.exe >>D:\aaa.bat
にて取得。フィラーとしてはA.Idei作FD ver3.13を使用
ファイルリストからバッチファイルの書き換えはEDIT.EXE
を使用。
関係ソフトはニフティ go fgal より入手。
旧レジストリはregedit.exeのWコマンドで残してありますが.復旧方法はありますか。
レジストリ変更後のレジストリ復旧方法について、ご指摘がありませんでした。わからないのでOSの再導入をしました。
お世話になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- Mac OS Parallels Desktop for Mac 2 2023/06/22 04:32
- Windows 8 SSD換装の注意点? アプリケーションインストールでの弊害? 4 2023/01/06 04:18
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- Windows Vista・XP やっぱり現代のPCにWindowsXPを入れるのは無理なのでしょうか? 4 2022/08/03 09:58
- ドライブ・ストレージ 複数のパソコンが自宅にあり、互いの固有のHD、光学ドライブを相互にアクセスする方法。その2 3 2022/12/16 09:54
- Visual Basic(VBA) 列 A に同じ日が2つが必要です。 1 2023/03/28 07:25
- その他(プログラミング・Web制作) VS codeを使って、ラズパイ Picoを動かせる簡単な方法 1 2023/04/27 13:49
- アプリ visual basicをネットで実行する 2 2022/08/07 11:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JARファイルをEclipseを使って...
-
jarの開き方を教えてください。
-
VBAでEXEファイルを動かす方法...
-
ファイルアイコンの左下に緑の□...
-
ファイル名の先頭が数字だと駄...
-
コマンドプロンプトで外のexeや...
-
【緊急】ウイルス:ANTINNYが増...
-
JAVA .jarファイルに再圧縮する...
-
VC++から引数付きexeファイルの...
-
ファイルの関連付け
-
以下のように複数のファイルを...
-
Visual BASIC か...
-
指定URLでブラウザを開くほか
-
C言語初心者の質問失礼します。
-
バッファとは何ですか
-
stdio.hをオープンできない…
-
どんなプログラムを書いても指...
-
教えてください!vectorworksに...
-
教えてください!vector works...
-
フリーソフトウェアでflaファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
JavaScriptでコマンドプ...
-
OLE又はDDEを使うVISUAL BESIC...
-
c/c++ ビルドしたにもかかわら...
-
VBAでEXEファイルを動かす方法...
-
コマンドプロンプトで外のexeや...
-
VC++から引数付きexeファイルの...
-
コンポーネント`MSCOMM32.cox'...
-
VBAで他のプログラムが起動して...
-
JARファイルをEclipseを使って...
-
ローカルのHTMLからexeファイル...
-
JAVA .jarファイルに再圧縮する...
-
以下のように複数のファイルを...
-
実行ファイルと実行モジュール...
-
64bit環境で32bitのodbc参照
-
LINK : fatal error LNK1104に...
-
VB6.0で作ったプロジェクトが起...
-
jarの開き方を教えてください。
-
ネットワーク越しのEXEファ...
-
eclipseで作ったプログラムを他...
おすすめ情報