
リモート デスクトップ経由で Windows Vista デスクトップにログインしたときに、一部のスタートアップ プログラムが実行されないようにすることは可能ですか。
私は、スタートアップ ショートカットに追加すると、CapsLock がオンの場合にのみ引数内の実行可能ファイルを実行する「Capster」のようなソリューションを期待していました。ただし、キーの状態を探すのではなく、リモート デスクトップ経由でログインしているかどうかを実際に検出したいのです。
起動時に無効にしたいアプリの種類は、IM クライアント (この場合は Digsby)、Windows サイドバー、Samurize、および複数のモニターで作業するための UltraMon です。
答え1
はい。「コンソール専用」プログラムを起動するコマンドを含むバッチ ファイルを作成します。そのファイルの先頭で、SESSIONNAME という変数を確認します。それが「コンソール」と同じであれば、それらのプログラムを実行します。そうでない場合は実行しません。
このような:
@echo off
IF %SESSIONNAME% == Console (
echo In console, executing programs.
REM List paths to programs here prefaced by "start " so they run async.
GOTO :END
) ELSE (
REM Not in console, not executing programs.
)
:END
答え2
代替ソリューション (コマンド プロンプト CLI に精通している場合のみ) 詳細: 特に埋め込み/狭いスペースでの FS ブロックの使用量が少なくなります。
お使いの OS がハードリンク ファイルのみをサポートしている場合 (XP/NT5 以前)、その制限も適用されます (exe とそのリンクは異なるボリューム/ドライブ上に配置できないなど)
priv/elevated/as admin コマンド プロンプトを開きます。
元の filename.exe へのシンボリック/ハード リンクを作成します (fsutil またはサードパーティの ln ツールを使用): scpath\Console_filename.exe
RDP セッションからこれを行う場合は、同じフォルダー (scpath) に %SessionName%_filename.exe という tmp/dummy/blank/link を作成して、エクスプローラーの LNK/prop エディターを回避する必要があります。注: %SessionName% は、定義されていない場合は、リテラル文字列として cmd によって使用されます。
同じターミナルから explorer.exe を実行し、ショートカット/PIF/LNK を編集して、ターゲットを "progpath\filename.exe" から "scpath\%SessionName%_filename.exe" に変更します。scpath は、filename.exe パスと異なる場合も、同じ場合もあります。
%SessionName%_filename.exe を削除し (手順 3 を実行した場合)、ターミナルを終了します。
シンボリックリンクは、ショートカットが相対パスを指すことができ、progpath と同じボリューム/ドライブにある必要がないため、より柔軟です。
ところで、ドライブ文字なしで C: の下にパーティション/ボリュームをマウントしても、ハードリンク (同じ NTFS 内にある必要がある) の制限は克服されません。