• ベストアンサー

ウィンドウサイズ・場所のレジストリ位置

マイドキュメントやマイコンピューターのウィンドウのサイズや位置を記憶して、変更した際にも元に戻せるようにしたいのですが何か方法はありますか? その部分にかかわるレジストリを1台のマシンで記憶しておけば、他のマシンでも同じにできると考えたのですが、レジストリの場所がわかりません。 場所をご存知の方見えませんか? (ひょっとしたらそんなのは無い?) パソコン教室で複数の同じ型のマシンを使用していますが、生徒さんが操作した後いちいち手作業で直すのは大変です。 以前にも同じような質問をしたのですが・・思うような回答が得られなかったので言い方を変えて再度質問させていただきました。

質問者が選んだベストアンサー

  • ベストアンサー
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.17

>74行目 「見つかりませんでした」 80041002 ごめんなさい。 wmiのSINKはやめます ではこれはどうでしょう? お手数ですが、これを実行する前に、 一度フォルダオプションで「全フォルダのリセット」を して 『マイドキュメント』、『マイコンピュータ』の フォルダ設定をしておいてください。 const HKCU = &H80000001 const REG_SZ = 1 const REG_EXPAND_SZ = 2 const REG_BINARY = 3 const REG_DWORD = 4 const REG_MULTI_SZ = 7 dim StatusChk() dim arrSubKeys dim flag Dim objTarget dim FldrPath(100) dim BackUpFile dim ItmNo(100) dim FolderCnt BackUpFile = "FolderSetting_BackupFile.ini" Set WshShell = WScript.CreateObject("WScript.Shell") i = WshShell.PopUp("フォルダ設定をバックアップします" ,0,"ittochan",65) if i<>1 then WScript.Echo "中止しました" WScript.Quit end if Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFile(WScript.ScriptFullName) BackUpFile = f.ParentFolder & "\" & BackUpFile Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") strBags="Software\Microsoft\Windows\ShellNoRoam\Bags\" flag=0 set Shell = WScript.CreateObject("Shell.Application") set WindowsShell = Shell.Windows getfldr() if FolderCnt>0 then for i=0 to FolderCnt-1 closefldr() next end if openfolder "shell:Personal" openfolder "shell:DriveFolder" getfldr() Set MyFile = fso.CreateTextFile(BackUpFile, True) MyFile.WriteLine 2 MyFile.WriteLine "shell:Personal" MyFile.WriteLine "shell:DriveFolder" GetSubKey() ReDim StatusChk(UBound(arrSubKeys)) for k=0 to FolderCnt-1 Set objTarget = WindowsShell.item(ItmNo(k)) 'Bagsキーからアドレスバーの状態を取得します。 on error resume next for i=0 to UBound(arrSubKeys) inta = WshShell.RegRead("HKCU\" & strBags & arrSubKeys(i) & "\Shell\Address") if Err.Number<>0 then StatusChk(i) = 2 Err.Clear else StatusChk(i) = inta end if next on error goto 0 'アドレスバーの設定を反転させる AddressBarChange() WScript.Sleep 1000 objTarget.Navigate FldrPath(k) 'アドレスバーの設定が元に戻った場所を探す on error resume next do for i=0 to UBound(arrSubKeys) inta = WshShell.RegRead("HKCU\" & strBags & arrSubKeys(i) & "\Shell\Address") if Err.Number<>0 then inta = 2 Err.Clear end if if StatusChk(i) <> inta then BagNo = arrSubKeys(i) Exit Do end if next loop while 1 on error goto 0 'アドレスバーの設定を元に戻す AddressBarChange() strKeyPath = strBags & BagNo & "\Shell" oReg.EnumValues HKCU, strKeyPath, arrValueNames, arrValueTypes MyFile.WriteLine UBound(arrValueNames) For i=0 To UBound(arrValueNames) strv = arrValueNames(i) MyFile.WriteLine arrValueTypes(i) MyFile.WriteLine strv strKeyPath1 = "HKCU\" & strKeyPath & "\" & strv Select Case arrValueTypes(i) Case REG_SZ MyFile.WriteLine WshShell.RegRead( strKeyPath1 ) Case REG_EXPAND_SZ MyFile.WriteLine WshShell.RegRead( strKeyPath1 ) Case REG_BINARY oReg.GetBinaryValue HKCU,strKeyPath ,strv,strValue MyFile.WriteLine uBound(strValue) For j = 0 to uBound(strValue) MyFile.WriteLine strValue(j) Next Case REG_DWORD MyFile.WriteLine WshShell.RegRead( strKeyPath1 ) Case REG_MULTI_SZ End Select Next next getfldr() for i=0 to FolderCnt-1 closefldr() next msgbox "終了しました" MyFile.Close WScript.Quit sub getfldr() dim i,j,k,obj j=0 for i=0 to WindowsShell.Count-1 Set obj = WindowsShell.item(i) if TypeName(obj)<>"Nothing" then if InStr(obj.LocationURL,"file:///") = 1 then ItmNo(j) = i FldrPath(j) = obj.LocationURL j=j+1 end if end if next FolderCnt = j end sub sub closefldr() dim i,obj for i=0 to WindowsShell.Count-1 Set obj = WindowsShell.Item(i) if TypeName(obj)<>"Nothing" then if InStr(obj.LocationURL,"file:///")=1 then pCnt = WindowsShell.Count BusyCheck(obj) obj.Quit do while pCnt = WindowsShell.Count WScript.Sleep 100 loop Exit for end if end if next end sub sub GetSubKey() oReg.EnumKey HKCU, strBags, arrSubKeys end sub sub openfolder(path) pCnt = WindowsShell.Count Shell.Open path do while pCnt = WindowsShell.Count WScript.Sleep 100 loop end sub Sub AddressBarChange() dim i for i=0 to UBound(arrSubKeys) if StatusChk(i)<>2 then StatusChk(i) = not StatusChk(i) WshShell.RegWrite "HKCU\" & strBags & arrSubKeys(i) & "\Shell\Address" ,StatusChk(i),"REG_DWORD" end if next End sub sub BusyCheck(obj) do WScript.Sleep 100 loop while obj.Busy end sub

wataruseken
質問者

お礼

返事が遅くなりました。 完璧ですね。 うまくいきました。 ありがとうございました。

wataruseken
質問者

補足

↓のお礼の補足です。 いろいろお手数をおかけしました。 本当に助かりました。

すると、全ての回答が全文表示されます。

その他の回答 (16)

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.6

先日、"Fix IE"をご紹介した者です。やっと、レジストリキーがわかりました。ANo.#2の方は "HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\BagMRU" "HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\Bags" と書いておられますが、私が調べた限りでは、過去に開いたことのあるフォルダのフルパスが、 "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" に、0・1・2・・・と数字で表された名前で一覧になっています。(フォルダのフルパスがバイナリ値で記録されているので、一見しただけではただの数字の羅列でフォルダの名前とはわかりにくいです。) "StreamMRU"の数字で記録されているフォルダの表示方法(大きなアイコンとか詳細表示とか)やウィンドウのサイズが、それぞれ "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\0" "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\1" "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\2"        ・        ・        ・ のように"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams"以下の同じ数字のキーに保存されているようです。ですから、 "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams" を開いてレジストリを書き出しておけばよいと思います。(過去に開いたことのあるフォルダの数にも寄りますが、数百KB程度です。) 『マイコンピュータ』や『マイドキュメント』だけとなると、"StreamMRU"の一覧から探さなければいけませんが、"0"なのか、"1"なのか、"100"なのか、過去に開いた順番で記録されている上に、他のフォルダのようにフルパスではないようなので、ちょっと厄介です。 私の環境では、『マイコンピュータ』、『マイドキュメント』それぞれ、 14 00 1f 50 e0 4f d0 20 ea 3a 69 10 a2 d8 08 00 2b 30 30 9d 00 00 14 00 1f 54 ba 8f 0d 45 25 ad d0 11 98 a8 08 00 36 1b 11 03 00 00 のデータが並んでいます。(他のフォルダは『マイコンピュータ』のデータの並びの後ろにフルパスが記録されているので、他のものよりデータの並びが短いものが、『マイコンピュータ』や『マイドキュメント』、『ごみ箱』等の特殊なフォルダだと思います。)

wataruseken
質問者

お礼

いろいろ調べていただいてありがとうございました。

wataruseken
質問者

補足

>"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams" いろいろ見ていただいてすいません。 ↑家のマシン(XP)でやってみました。200K程度ですが、これはうまくいきませんでした。 明日、会社のMeで試してみます。 (わけのわからない数字の羅列から、特定のものを探すって大変だと思うのですが、具体的なマニュアルって無いんでようかねー)

すると、全ての回答が全文表示されます。
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.5

それぞれのマシンにインストールしてあるソフトが違うので、当然、それぞれのマシンごとレジストリのバックアップが必要となります。 ま、40Mぐらいでしたら、たいしたことがないと思いますが・・・。 それが大変ならば、参考URLのようなハードを用いるという手もあります。 いくらかかるか わかりませんが。

参考URL:
http://www.idk.co.jp/products/hdg/HDG-01B.html
wataruseken
質問者

お礼

マシンごとのバックアップもローカルのディスクに一応とっておこうかなと思います。 ありがとうございました。

wataruseken
質問者

補足

なるほど、すごいシステムですね!わざわざ探していただけたのですね!(ミニ工具セットもほしいですね)ありがとうございます。大きなスクールになったらいずれ検討することがあるかもしれません。 実はもっと簡単に、レジストリ(…にこだわるのですが)から復元できるのではないかと思っていたのですが。 Web探しても、その部分が見つからないし、ひょっとしたら、たかがマイドキュメントのサイズ・位置だけれど、大変なことかも・・・という気がしてきました。

すると、全ての回答が全文表示されます。
  • takajp
  • ベストアンサー率20% (190/927)
回答No.4

>マイドキュメントとマイコンピューターなのですが、ウィンドウ状態で生徒さんはとんでもない大きさにしたり、変な場所に移動しているので、次のセミナー時に生徒さんがびっくり!ということになります パソコン教室でしょう Windowsは、こんなもんと教えておくべきですよ あるとすれば マイドキュメントとマイコンピュータを常に最大化で使用するしかないようです

wataruseken
質問者

お礼

アドバイスありがとうございます。

wataruseken
質問者

補足

>Windowsは、こんなもんと教えておくべきですよ おっしゃるとおりなのですが、すべて1からやるセミナーばかりじゃなくて、Excelセミナーの時には基本的なことを説明する時間が、他のことも含めてあまりないのです。 また、あくまで学生ではなく、「お客様」なので禁止事項できるだけ少なく、逆に私としては、できるだけ「自由に触っていただいていいですよ。あとはやっときますから」というスタンスでいきたいと思っています。 レジストリ全部バックアップ&レストアで可能だということは、そのバックアップのどれかだ・・・というように思ったのですが。(浅はかな素人考えか?) いろいろ検索してもないんですね。

すると、全ての回答が全文表示されます。
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.3

例えば 任意のフォルダで 「設定をファイルとして保存しておいて  そのフォルダだけの設定を元に戻す」っていうのは 可能ですが・・・・ ↓のキーのバックアップ&リストアで可能かどうかは 検証してみます。

wataruseken
質問者

補足

↓のキーのバックアップ&リストアでやってみましたが、当方ではだめでした。 全部をバックアップ&リストアだとうまくいくので、どこかにあると思うのですが・・・・約40M近くになるのでちょっとという感じです。 マシンによって、ネットワークの設定などあるので全部はだめなのですが。

すると、全ての回答が全文表示されます。
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.2

>その部分にかかわるレジストリを1台の >マシンで記憶しておけば、他のマシンでも >同じにできると考えたのですが、 >レジストリの場所がわかりません。 場所は判ります HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\BagMRU と HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\Bags です 詳細はマシンによって違います。 >元に戻せるようにしたいのですが何か方法はありますか? 「フォルダオプション」の「全フォルダをリセット」をクリックするのが簡単ですが これじゃ嫌なんですね?

wataruseken
質問者

お礼

ありがとうございました。 いろいろ大変だということがわかりました。

wataruseken
質問者

補足

「全フォルダをリセット」やってみましたが、サイズ、位置が戻りません。 主にさわるのが、マイドキュメントとマイコンピューターなのですが、ウィンドウ状態で生徒さんはとんでもない大きさにしたり、変な場所に移動しているので、次のセミナー時に生徒さんがびっくり!ということになります。 これをレジストリでチャチャっと戻して、次の準備する・・・をしたいのですが。

すると、全ての回答が全文表示されます。
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

すべてのマシンを操作するならば、レジストリ全体のバックアップをそれぞれとったらどうでしょうか? そうすれば、ほかに変更されたものがあってももとに戻せるでしょう。

wataruseken
質問者

お礼

アドバイスありがとうございます。 最終的には、これもアリですね。

wataruseken
質問者

補足

早速の回答ありがとうございます。 ・・・それもアリなのですが、できれば関係する部分だけもって行きたいのです。 全部だとサイズもでかいですし・・・ あと、マシンによって多少ですが、入っているソフトが違うものもあるのです。

すると、全ての回答が全文表示されます。

関連するQ&A