Java を使用して、次のパスを取得できるコードが必要です: 1) 現在のユーザーのスタート メニュー 2) すべてのユーザーのスタート メニュー
WinXP と Win7 の両方の回答が必要です。したがって、うまくいけば、両方を得ることができる一般的な答えがあります。
Java を使用して、次のパスを取得できるコードが必要です: 1) 現在のユーザーのスタート メニュー 2) すべてのユーザーのスタート メニュー
WinXP と Win7 の両方の回答が必要です。したがって、うまくいけば、両方を得ることができる一般的な答えがあります。
DLL を作成してネイティブ Windows API を呼び出す以外に選択肢はありません。
SHGetFolderPath
(NULL, CSIDL_PROGRAMS, NULL, SHGFP_TYPE_CURRENT, &szPathBuffer)
SHGetFolderPath(NULL, CSIDL_COMMON_PROGRAMS, NULL, SHGFP_TYPE_CURRENT, &szPathBuffer)
スタート メニューのルートがどうしても必要な場合は、 と を使用CSIDL_STARTMENU
しCSIDL_COMMON_STARTMENU
ます。
既知のフォルダーの完全なリスト: CSIDL .
Windows Vista 以降を対象とする場合は、SHGetKnownFolderPath
の代わりに function を使用してSHGetFolderPath
ください。
JNA ライブラリを使用して、ネイティブ コードを自分で記述せずにネイティブ Windows API を呼び出すことができますが、純粋な Java コードです。
さて、私は解決策を見つけましたが、他の誰かがより洗練された解決策を持っているかもしれません.
「Runtime.getRuntime().exec(command);」のようなことをする予定です。コマンドは、次のレジストリ キーを照会するための「reg query」になります。
現在のユーザーは次で参照できます: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Start Menu
すべてのユーザーは、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Start Menuで参照できます。
これらは、Win7 と WinXP の両方で同じです。他の誰かがより良い解決策を知っている場合は、私も喜んでそれを見ていきます。
もう 1 つのオプションは、vbs API からスタート メニュー項目を管理することです。
そのためのJavaラッパーを作成しました。
// Install Start Menu
WindowsUtils.installStartMenuItem(WindowsUtils.SPECIALFOLDER_Programs,"my_start_menu", "explorer.exe", "http://www.google.es","Acceso directo a google");
// Uninstall Start Menu
WindowsUtils.uninstallStartMenuItem(WindowsUtils.SPECIALFOLDER_Programs, "my_start_menu");