Я бы смонтировал куст реестра пользователя и искал значение пути. Да, это неоптимальное решение по всем упомянутым причинам (плохая прямая совместимость и т. Д.). Однако, как и многие другие вещи в Windows, MS не предоставила API-способ делать то, что вы хотите, поэтому это лучший доступный вариант.
Вы можете получить SID (не GUID) пользователя, используя LookupAccountName . Вы можете загрузить куст реестра пользователя, используя LoadUserProfile , но, к сожалению, для этого также требуется токен пользователя, для которого потребуется пароль. К счастью, вы можете вручную загрузить улей, используя RegLoadKey , в произвольное место, прочитать данные и выгрузить их (я думаю).
Да, это боль, и да, она, вероятно, сломается в будущих версиях Windows. Возможно, к тому времени MS предоставит API для этого, перенесет его обратно в более старые версии Windows и автоматически распространит через обновление Windows ... но я не задерживаю дыхание.
P.S. Эта информация предназначена для дополнения информации, представленной в вашем связанном вопросе, включая отказ от ответственности.