Как проверить, использует ли текущий вошедший в систему пользователь перемещаемый профиль?

StackOverflow https://stackoverflow.com/questions/1200173

  •  05-07-2019
  •  | 
  •  

Вопрос

Как я могу проверить, использует ли текущий пользователь перемещаемый профиль?

Есть ли какая-нибудь библиотека .net framework, которая может помочь?

Это было полезно?

Решение

Я считаю, что единственный способ сделать это - вызвать функцию оболочки Win32 GetProfileType . Вам нужно будет использовать P / Invoke, чтобы сделать вызов, а затем проверить значение out параметра pdwFlags для PT_ROAMING (которое имеет значение 2).

Я не вижу образец подписи для этой функции на pinvoke.net, но с такой простой подписью:

BOOL WINAPI GetProfileType(      
    DWORD *pdwFlags
);

Создать его не составит труда.

Другие советы

    [DllImport("Userenv.dll", EntryPoint = "GetProfileType", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern bool GetProfileType(ref uint pdwflags);

    [Flags]
    enum Win32ProfileType : uint { 
        Local=0x00,
        Temporary=0x01,
        Roaming=0x02,
        Mandatory=0x04
    }


    public void SomeTest()
    {
        uint type = 0;
        if (GetProfileType(ref type)) {
            //todo
        }
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top