Во-первых, просто упомянуть, что назначение профиля пользователя по умолчанию является основой для всех новых профилей пользователей. Поэтому его следует использовать только для настройки приложений, настроек и настроек для каждой будущей новой учетной записи пользователя на P C. (изменения внутри него не распространяются на существующих пользователей).
Следующий метод аналогичен существующему ответу в том, что дополнительное обслуживание используется для обслуживания любых переменных в содержащихся данных строка. Обратите внимание, что типом значения данных по умолчанию является REG_EXPAND_SZ, но он также может иметь тип REG_SZ (тип раскрытия необходим, только если строка содержит переменную).
@Echo Off
Set "RKey=HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList"
Set "RVal=Default"
Set "ProfilePath="
For /F "Tokens=2*" %%G In (
'""%__APPDIR__%reg.exe" Query "%RKey%" /V "%RVal%" 2>NUL|"%__APPDIR__%find.exe" /I "%RVal%""'
)Do For /F "Tokens=*" %%I In ('Echo("%%~H"')Do Set "ProfilePath=%%~I"
If Not Defined ProfilePath Exit /B 1
Rem Your code using "%ProfilePath%" goes below here
Echo "%ProfilePath%" & Pause
У меня Rem
появилась строка с комментарием, , которая может быть опционально опущена , и приведена примерная строка под ней для демонстрационных целей, Пожалуйста, измените это при необходимости .
Код использует полные пути для всех внешних команд (через специальную переменную %__APPDIR__%
, , которая всегда будет указывать на их правильное местоположение ). Я сделал это для того, чтобы убрать любую зависимость от содержимого редактируемых переменных среды %PATH%
и %PATHEXT%
, (преднамеренное или случайное изменение этих двух переменных среды могло бы нарушить код) .