2

Windows で、バッチ ファイルを使用してスタートアップ項目を表示するにはどうすればよいですか?

4

5 に答える 5

2

PowerShell を使用できる場合は、AUTORUNSCを使用するコードを少し示します。

$autoruns = [xml](AUTORUNSC -x 2>$null)

foreach ($item in $autoruns.autoruns.item)
{
  If ($item.Description.Length -gt 0)
  { Write-Output $item.Description.Trim() }
  Else
  { Write-Output "n/a"}
  Write-Output $item.ItemName.Trim()
  Write-Output $item.imagepath.Trim()
  "---------------------------------------"
}

EDIT : -xAUTORUNSC のパラメーターは、XML を出力します。

于 2009-04-13T14:50:40.777 に答える
0

regコマンドを使用して、適切なレジストリキーを照会できます。

reg QUERY HKCU\Software\Microsoft\Windows\CurrentVersion\Run > out

これにより、次のように、ファイル「out」内のキーのリストが表示されます。

    UIWatcher    REG_SZ    D:\Utils\Ashampoo UnInstaller\UIWatcher.exe
    SpybotSD TeaTimer    REG_SZ    C:\Program Files\Spybot - Search & Destroy\TeaTimer.exe
    SandboxieControl    REG_SZ    "C:\Program Files\Sandboxie\SbieCtrl.exe"
    WMPNSCFG    REG_SZ    C:\Program Files\Windows Media Player\WMPNSCFG.exe

このリストを解析して、REG_SZが区切り文字である最初と2番目のトークンを取得する必要があります。プレーンバッチ言語(meh ...)に固執したい場合は、問題に他なりません。FOR/ Fコマンドを使用して、次の方法でトークンを取得する必要があります。

FOR /F "tokens=1,2 delims=$" %i in (out) do @echo %i %j

その前に、REG_SZをいくつかのcharに置き換える必要があります。たとえば、FORは文字列区切り文字を受け入れないため、$としましょう。プロセス全体を単一のバッチファイルに入れることができます。

SETLOCAL EnableDelayedExpansion

@echo off > StartUp.txt
FOR /F "skip=2 usebackq tokens=* delims= " %%i in (`reg QUERY HKCU\Software\Microsoft\Windows\CurrentVersion\Run`) do (  
    set LINE=%%i
    set LINE=!LINE:REG_SZ=$!
    FOR /F "tokens=1 delims=$" %%j in ('cmd.exe /C echo !LINE!') do echo %%j >> StartUp.txt
)

実行後、StartUp.txtには、それぞれ独自の行にプログラムのフルネームが含まれている必要があります。構成'cmd.exe/ C echo!LINE!' 紛らわしいです。LINE変数をスキャンしていた問題の回避策としてこれを配置しました。ドキュメントによると、「!LINE!」しかし、何らかの理由で機能しません...!VARに興味がある場合に備えて!構文、set /?を参照してください

とにかく、バッチ言語は時間がかかるので、可能であればそれを避けるか、awk、sed、autohotkeyなどのいくつかの深刻なツールと組み合わせて使用​​する方が良いです...それらのそれぞれは単一のregコマンドの出力を解析できますregexp行、autohotkeyはそれのための素晴らしいGUIさえ作成することができ、uはバッチスクリプトを完全に回避することができます。

最後に、「すべてのユーザー」のセクションを実行することも忘れないでください。

于 2009-04-13T12:45:18.363 に答える