1

レジストリを変更する VBScript を作成しているので、変更を加える前に、レジストリをファイルにバックアップしようとします。これは私の Win7 64 ビットでは正常に動作しますが、WinXP 32 ビットで実行しようとすると、動作すると表示されますが、ファイルは作成されません。コードを以下に示します。これが Xp で機能しないのはなぜですか?どうすれば修正できますか?

Sub BackupRegistry()
        regFile = "%USERPROFILE%\Desktop\regBackup.reg" 
        Set oShell = CreateObject("WScript.Shell")
        Set fso = CreateObject("Scripting.FileSystemObject")

        If Not fso.FileExists(regFile) Then
            regCmd = "regedit.exe /E " & regFile
            oShell.Run regCmd, 0, True
            MsgBox("Registry backed up to " & regFile)
        End If
    End Sub
4

2 に答える 2

1

XP では%USERPROFILE%スペースが含まれている可能性が高いC:\Documents and Settings\usernameため (英語版)、パスを引用する必要があります。パスを引用しないと、コマンドはpath not foundエラーで失敗します。

regCmd = "regedit.exe /E """ & regFile & """"

Windows 7%USERPROFILE%ではC:\Users\username(スペースなし) であるため、この問題は発生しません。

于 2013-04-30T19:29:56.867 に答える
1

これは、いくつかの基本的なデバッグで解決するはずです。を追加

wscript.echo regCmd

実行する前に、文字列をコピーしてXPボックスのコンソールウィンドウに貼り付けます。実行すると、原因はoShell.Runです。それ以外の場合は、コンソールでコマンドを修正し、コードを調整して生成します. また、テスト中に 0 を 1 に変更して、コマンドの実行中にコンソール ウィンドウが表示されるようにします。

于 2013-04-30T19:29:23.927 に答える