2009-07-29 3 views

Antwort

3

Ich glaube, der einzige Weg, dies zu tun ist, die Win32-Shell-Funktion GetProfileType aufrufen. Sie müssten P/Invoke verwenden, um den Aufruf auszuführen, und dann den out-Wert des pdwFlags-Parameters für PT_ROAMING überprüfen (der den Wert 2 hat).

Ich habe keine Unterschriftsprobe für diese Funktion auf pinvoke.net sehen, aber mit einer solchen einfachen Unterschrift:

BOOL WINAPI GetProfileType(  
    DWORD *pdwFlags 
); 

Erstellen einer nicht schwer sein würde.

+0

@Bubbafat: Stimmt es, dass Benutzer mit servergespeicherten Profilen standardmäßig keine Installationsrechte haben? Wie setzt man diese Berechtigungen dann? – gneash

1
[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 
     } 
    }