2009-04-13 20 views

答えて

3

スタートアップアイテムは、自分のアイテムと「すべてのユーザー」アイテムの組み合わせです。

dir "%homedrive%%homepath%\start menu\progams\startup" 

と「すべてのユーザー」のもの(通常):あなたがあなた自身を見つけることができます

dir "%homedrive%%homepath%\..\all users\start menu\progams\startup" 

あなたがしなければならないのは、パスを削除するには、ファイル名を操作し、 "ですショートカット名を取得するには、最後に.lnkを入力します。

これらのディレクトリに最初にcdを追加してdirだけすると、パスを削除する必要はありません。

UPDATE:あなたのコメントが示すように見えるように、あなたのシステムの起動時に起動するすべてのものをしたい、場合

、彼らはあらゆる場所にいます。 Autoruns(またはその目的のために、コマンドラインの兄弟、Autorunsc)のコピーを入手したいと思うでしょう。

これはマイクロソフト自身が「祝福している」ため、これが最良のアプローチです。

0

「すべてのユーザー」はMSConfigにwhatsを表示していないようです。 MSConfig StartUpエントリを取得するためにレジストリを照会する方法はありますか?

+1

@James、これは私の答えではなく、 "回答"そのものであったはずです。どちらの場合でも、私の更新を参照してください。 – paxdiablo

0

すでに回答したように、スタートアップ項目は、「すべてのユーザー」のスタートアップ項目と現在のユーザーの組み合わせです。スタートアップ項目は、スタートメニューのスタートアップフォルダにリンクとして、またはレジストリエントリとして配置できます。

スタートアップフォルダについては、すでにPaxの回答のパスが与えられていますが、英語以外のバージョンのWindowsではパスが異なることに注意してください。

レジストリについては、バッチスクリプトを使用してクエリを実行することはできません。それがオプションの場合は、PowerShellスクリプトから実行できます。それ以外の場合は、タスクを達成する最も簡単な方法は、タスク用の小さなユーティリティプログラムを作成することだと思います。 (.NET言語のいずれかで行うのは簡単ですが、.NET Frameworkを使用することができない場合はC言語で行うこともできます)。

レジストリエントリは、すべてのユーザーのために、ここで見つけることができます:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 

そして、現在のユーザーのために:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 

は最後に、レジストリはまた、RunOnceキーが含まれていることに注意してください。起動時に一度だけ実行する必要のあるエントリが含まれていて、削除されます。あなたが適切なレジストリキーを照会するregコマンドを使用することができます

0

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 QUERY HKCU\Software\Microsoft\Windows\CurrentVersion\Run > out 

、このリストは、REG_SZが区切り文字である第1および第2のトークンを取得します。その前に

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

:あなたは何もなく、トラブルではないプレーンなバッチ言語(MEH ...)、に固執する場合は、方法でトークンを取得するために、/ Fコマンドで使用する必要がありますFORが文字列区切り文字を受け入れないので、REG_SZをいくつかのcharで置き換える必要があります。あなたはそれを実行した後StartUp.txtは、独自のライン上の各プログラムの完全な名前が含まれている必要があり

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 
) 

:全体のプロセスは、単一のバッチファイルに入れることができます。構成 'cmd.exe/C echo!LINE!'混乱しています。私はLINE変数をスキャンしていた問題の回避策としてそれを入れました。ドキュメントによると、それはちょうど '!LINE!'それは何らかの理由で動作しません...あなたが興味がある場合には!VAR!構文、set /?を参照してください。

とにかく、バッチ言語は時間がかかりますので、できるだけ避ける方がいいですし、awk、sed、autohotkeyなどのいくつかの重大なツールと組み合わせて使用​​する方がいいです...それぞれがregの出力を解析できますautohotkeyは素晴らしいGUIを作成することもできますし、バッチスクリプトを完全に回避することもできます。

最後に、「すべてのユーザー」のセクションを実行することもできます。

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:AUTORUNSCの-xパラメータが出力XMLます。

関連する問題