環境変数一括取得:ExpandEnvironmentStringsにて環境変数「ProgramFiles」の取得結果が「ProgramFiles(x86)」になる
先日、フォーラムに環境変数についての投稿がありましたが、その時、調査していて、
全て取得してしまうようライブラリを作ってみたのですが、「ProgramFiles」と「CommonProgramFiles」は取得結果が誤っていました。
本来は、ProgramFilesは「C:\Program Files」、CommonProgramFilesは「C:\Program Files\Common Files」が正解なのですが、(x86)が付いた方と同じ値を取得してしまいます。
滅多に使わない環境変数とはいえ、100%のライブラリにしたいところです。
何か良い方法をご存じの方がおりましたら、ご教授ください。
<試していただける方は、下記のスクリプトをコピペで作成し、変数をインポートしてください>
【スクリプト】(環境変数・特殊フォルダ取得.ums7)
KAN = Array("ALLUSERSPROFILE", "APPDATA", "CommonProgramFiles", "CommonProgramFiles(x86)", "CommonProgramW6432", "COMPUTERNAME", "ComSpec", "DriverData", "FPS_BROWSER_APP_PROFILE_STRING", "FPS_BROWSER_USER_PROFILE_STRING", "HOMEDRIVE", "HOMEPATH", "LOCALAPPDATA", "LOGONSERVER", "NUMBER_OF_PROCESSORS", "OneDrive", "OS", "Path", "PATHEXT", "PROCESSOR_ARCHITECTURE", "PROCESSOR_IDENTIFIER", "PROCESSOR_LEVEL", "PROCESSOR_REVISION", "ProgramData", "ProgramFiles", "ProgramFiles(x86)", "ProgramW6432", "PROMPT", "PSModulePath", "PUBLIC", "SESSIONNAME", "SystemDrive", "SystemRoot", "TEMP", "TMP", "USERDNSDOMAIN", "USERDOMAIN", "USERDOMAIN_ROAMINGPROFILE", "USERNAME", "USERPROFILE", "windir")
SPF = Array("AllUsersDesktop", "AllUsersStartMenu", "AllUsersPrograms", "AllUsersStartup", "Desktop", "Favorites", "MyDocuments", "AppData", "NetHood", "PrintHood", "Programs", "Recent", "SendTo", "StartMenu", "Startup", "Templates", "Fonts")
Set objShell = CreateObject("WScript.Shell")
For I = 0 To UBound(KAN)
SetUMSVariable KAN(I) , objShell.ExpandEnvironmentStrings("%" & KAN(I) & "%")
Next
For I = 0 To UBound(SPF)
SetUMSVariable SPF(I) , objShell.SpecialFolders(SPF(I))
Next
Set objShell = Nothing
【変数】(下記をコピペでメモ帳に貼り付け、「変数インポート用(環境変数・特殊フォルダ).csv」で保存し、インポートしてください)
"ALLUSERSPROFILE", "APPDATA", "CommonProgramFiles", "CommonProgramFiles(x86)", "CommonProgramW6432", "COMPUTERNAME", "ComSpec", "DriverData", "FPS_BROWSER_APP_PROFILE_STRING", "FPS_BROWSER_USER_PROFILE_STRING", "HOMEDRIVE", "HOMEPATH", "LOCALAPPDATA", "LOGONSERVER", "NUMBER_OF_PROCESSORS", "OneDrive", "OS", "Path", "PATHEXT", "PROCESSOR_ARCHITECTURE", "PROCESSOR_IDENTIFIER", "PROCESSOR_LEVEL", "PROCESSOR_REVISION", "ProgramData", "ProgramFiles", "ProgramFiles(x86)", "ProgramW6432", "PROMPT", "PSModulePath", "PUBLIC", "SESSIONNAME", "SystemDrive", "SystemRoot", "TEMP", "TMP", "USERDNSDOMAIN", "USERDOMAIN", "USERDOMAIN_ROAMINGPROFILE", "USERNAME", "USERPROFILE", "windir","AllUsersDesktop", "AllUsersStartMenu", "AllUsersPrograms", "AllUsersStartup", "Desktop", "Favorites", "MyDocuments", "AppData", "NetHood", "PrintHood", "Programs", "Recent", "SendTo", "StartMenu", "Startup", "Templates", "Fonts"
"","",""
また、変数は使用する分だけに絞り、不要なものは削除してもエラーになりませんので、環境変数などお使いになる方は、部品化してお使いください。