Re[2]: Как определить тип пользователя "local " или "roaming
От: justyuriy  
Дата: 28.01.03 13:40
Оценка:
Здравствуйте, sasha, Вы писали:

S>Здравствуйте, justyuriy, Вы писали:


J>>Как программно определить тип пользователя "local profile" или "roaming profile"?


S>
S>BOOL GetProfileType
S>  DWORD *dwFlags  // profile type
S>);

S>The GetProfileType function retrieves the type of profile loaded for the current user. 

S>
S>dwFlags 
S>[out] Pointer to a variable that receives the profile type. This parameter can be one of the following values. Value Meaning 
S>PT_MANDATORY The user has a mandatory profile. 
S>PT_ROAMING The user has a roaming profile. 
S>PT_TEMPORARY The user has a temporary profile; it will be deleted at logoff.  
S>


S>Годится?


Спасибо за ответ и совет, но эта функция, как написано в MSDN, определяет тип профиля
только для текущего пользователя (мне нужно для всех).
Возможно, я неправильно понимаю сам принцип роуминга, но в моем понимании одновременно на
одной машине может быть загружено несколько роуминговых профилей. И они будут видны на вкладке
System Properties/User Profiles как Roaming со своими значениями Size, Updated.
Кроме того, эта функция у меня не определяет в отсутствие Active Directory имеющиеся профили
как Local. Она возвращает 1 как результат работы функции,
но значение флага упорно устанавливается в 0, хотя, как я понимаю, должны быть значения
1, 2 или 4, для Local, в частности, 4. У меня нет Active Directory (и не может быть Roaming),
но значения Local на вкладке System Properties/User Profiles присутствуют.
Привожу мой код, возможно, что-то не так. Буду благодарен за исправления и замечания.

DWORD dwProfileType = 0;
char szProfileType[1024];
BOOL bRes = GetProfileType(&dwProfileType);
if(bRes)
{
if(dwProfileType == PT_MANDATORY)
strcpy(szProfileType, "Mandatory");
if(dwProfileType == PT_ROAMING)
strcpy(szProfileType,"Roaming");
if(dwProfileType == PT_TEMPORARY)
strcpy(szProfileType,"Temporary");
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.