
Windows、DOS、レジストリの使い方で教えていただきたいことがあります。
実現したいことは、
1. 「レジストリからコマンドプロンプトのショートカットを実行したい」
2. 「レジストリのデータ内で環境変数を使用したい」
の2点です。
──────
以下のような環境です。
・Windows7 64bit
・管理者権限のユーザでログインし使用しています。
・ファイル名を指定して実行、「cmd」を入力し[OK]で、コマンドプロンプトが起動できます。
・「c:\Windows\System32\cmd.exe」のショートカット(.lnk)を作成し、実行できることも確認できています。
このような環境で、エクスプローラーで「何もないところ」を右クリックした時に.vbs や .bat を実行したいと考え、
HKEY_CLASSES_ROOT\Directory\background\shell\cmd\command 周辺を編集することにしました。
現在、エクスプローラーで「何もないところ」を右クリックした時のコンテキストメニューから、設定したものを表示・実行するところまでは成功しています。
しかし、上述の2点、
1. 「レジストリからコマンドプロンプトのショートカットを実行したい」
2. 「レジストリのデータ内で環境変数を使用したい」
で引っ掛かってしまいます。
──────
[1]
レジストリのデータ内で「cmd /c ~」と設定した場合、「c:\Windows\System32\cmd.exe」を直接実行しているので問題ないのですが、
例えばデータ内で「cmd.exe」のショートカット(.lnk)を指定して実行すると
「[Window Title] Explorer.EXE [Content] は有効な Win32 アプリケーションではありません。」と表示されてしまいます。
[2]
コントロール パネル -> すべてのコントロール パネル項目 -> システム -> システムの詳細設定 -> 環境変数 -> ((user))のユーザー環境変数
こちらの値に、任意のフルパスを設定済です。
これをレジストリのデータ内で「%((設定したフルパス))%」と指定しても
「[Window Title] Explorer.EXE [Content] アプリケーションが見つかりません」と表示されてしまいます。
──────
さまざま検索したのですが、そもそも自分がレジストリの使い方や、権限の理解ができていないのでは、と感じています。
お知恵をお貸しいただければ幸いです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No.2です。
すみません。訂正させてください。
よく考えてみましたら、レジストリには、よく「%SystemRoot%\~」等の記述が使われますので、「%」で囲んだ環境変数は使えますね。失礼しました。
恐らく、今回の件でレジストリに環境変数が使えないのは、当該のレジストリキーの「既定」の値の種類が、「REG_SZ」になっているからかと思います。これを「REG_EXPAND_SZ」にする必要があるかと思います。
レジストリキーを新規に作成しますと、
既定の値は、「REG_SZ」で作成されてしまいますので、
そのレジストリキーを右クリックし、
「新規」をクリックし、
「展開可能な文字列値」をクリックします。
名前は、そのまま「新しい値 #1」等で結構です。
作成した値をダブルクリックし、環境変数を使ったプログラムのパス等を記述します。
当該のレジストリキーを右クリックし、
「エクスポート」をクリックし、
任意の場所に、任意の名前を付けて保存します。
保存されたREGファイルを右クリックし、
「編集」をクリックします。
メモ帳でファイルが開きますので、
「@=」から始まる行を削除し、
「"新しい値 #1"=」の部分を「@=」に書き換え、
上書き保存して閉じます。
保存したREGファイルをダブルクリックして、レジストリを追加します。
これで、当該のレジストリキーの値が、「REG_EXPAND_SZ」となり、環境変数が使えるようになるかと思います。
わかりやすいご説明ありがとうございます。
やりました!
cmd /c %((環境変数で設定したフルパス))%\hoge.vbs %((環境変数で設定したフルパス))%\hoge.bat
これを実行したところ、ひとまず環境変数の利用は確認できました。
2. 「レジストリのデータ内で環境変数を使用したい」
はこれでOKです。助かりました!
ですが一方、
1. 「レジストリからコマンドプロンプトのショートカットを実行したい」
こちらは効かなかったですね。
REG_EXPAND_SZとは関係ないのか、キー自体を考え直すべきなのか。
もう少しいろいろ試行してみます。
No.2
- 回答日時:
検証してみましたが、恐らくWindowsのレジストリの値に、「%」で囲んだ変数は使えない気がします。
その他の記述方法があるかも不明です。どういった目的で、それを実現したいのかが分かりませんが、違うアプローチの仕方で解決された方が良い気がします。
例えば、任意の場所に、「コマンドプロンプトの起動」というフォルダを作成します。
次に、メモ帳を起動し、
以下の線内の文章をコピー&ペーストし、
「スタート.bat」という名前を付けて上記のフォルダ内に保存し、
メモ帳を閉じます。
――――――――――――――――――――
@echo off
cmd /k "%~dp0メイン.bat"
――――――――――――――――――――
次に、再度メモ帳を起動し、
以下の線内の文章をコピー&ペーストし、
「メイン.bat」という名前を付けて上記のフォルダ内に保存し、
メモ帳を閉じます。
変数名やパスは、ご自身の環境や用途に合わせて書き換えてください。
――――――――――――――――――――
@echo off
rem ■ カレントディレクトリの移動 ■
cd "C:\XXX"
rem ■ パスの追加 ■
path %PATH%;C:\AAA
path %PATH%;C:\BBB
rem ■ 必要な変数の代入 ■
set CCC=C:\CCC
set DDD=C:\DDD
――――――――――――――――――――
次に、「スタート.bat」のショートカットを作成し、
名前を「スタート」に変更し、
起動用のレジストリの値に、
「explorer "C:\~~~\コマンドプロンプトの起動\スタート.lnk"」
という感じで、そこの正しいパスを書き込んでください。
最後に、上記で作成したショートカットファイルを右クリックし、
プロパティをクリックし、
「詳細設定」をクリックし、
「管理者として実行」にチェックを入れ、
「OK」をクリックして画面を閉じてください。
(※管理者として実行する必要が無ければ、この作業は不要です。)
以上です。
「.bat」ファイル(バッチファイル)の編集は、右クリックから「編集」をクリックすると出来ると思います。
上記の方法が、質問者さんの実現したい事と違っていたらすみません。
又、Windows10 32bit環境での確認ですので、そちらの環境でうまく動作しなかったらすみません。
No.1
- 回答日時:
コマンドプロンプトに付いては下記を参照
https://tipszone.jp/20110612_cmd/
バッチファイル関係はこちら
http://www.atmarkit.co.jp/ait/articles/1609/07/n …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 フォルダの新規作成を必ず「ドキュメント」にする方法 1 2023/06/24 09:08
- Visual Basic(VBA) VBSで作成した相対パスのショートカットが他者と共有できません。 1 2022/09/05 11:20
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- その他(OS) windows11非対応のインストール 3 2022/10/26 07:12
- その他(セキュリティ) 役所など、情報系システムのセキュリティが弱くても業務システムに問題ないか 3 2022/11/02 16:38
- Windows 10 (続き2)2つのウィンドウ選択時の表示について 3 2023/08/21 22:41
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- フリーソフト テキストエディア oedit の環境設定(初期設定)ファイルはどこ? 1 2022/11/18 15:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプト 閉じた時の...
-
アイコン右下の盾を消す方法
-
PCのデスクトップに保存した画...
-
フォルダの削除について
-
VBA ファイルを開くダイアログ...
-
内蔵HDDを認識させない方法...
-
C:\\Windows\\SoftwareDistribu...
-
VCFファイル内の同一ファイルを...
-
DOCOMOP-07Aを購入しました。
-
Docuworks(ドキュワークス)の不...
-
ファイルの名前が変更できない
-
フォルダ名(?)に本名が入っ...
-
印刷ができない
-
「Documents and Settings」フ...
-
Google Apps Scriptで自動印刷
-
郵便局のはがきキットでの印刷
-
メールアドレス一覧表を印刷したい
-
Outlook Express 6 のメッセー...
-
EXIF情報の削除をした後、プロ...
-
マイミュージックが消えてしま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプト 閉じた時の...
-
アイコン右下の盾を消す方法
-
管理者権限でも管理者として実...
-
コマンドプロンプトが一瞬で消える
-
「ファイル名を指定して実行」...
-
Snipping Tool (ST)が急に異...
-
Outlook Express 5 のアドレス...
-
コマンドプロンプトの既定値を...
-
拡張子のみ一括変更したい コ...
-
ファイル名の一部を一括変更 ...
-
DISMやSFCはコマンドプロンプト...
-
Windows7、レジストリからコマ...
-
PCクリーアップについて
-
config.sysの書き換え
-
Windows7のコマンドプロンプト...
-
読み取り専用を解除したいので...
-
助けて! pearpcが起動できませ...
-
windows7でアクセス許可が下り...
-
AviUtlでアクセス許可を求めら...
-
フォルダの削除について
おすすめ情報