public WindowsUserSpecificSettings(string domain, string user, string pass) { WindowsUserSpecificSettings.AcquireTokenPriv("SeImpersonatePrivilege", 40U); WindowsUserSpecificSettings.AcquireTokenPriv("SeBackupPrivilege", 40U); WindowsUserSpecificSettings.AcquireTokenPriv("SeRestorePrivilege", 40U); if (!WindowsUserSpecificSettings.LogonUser(user, domain, pass, WindowsUserSpecificSettings.LogonType.LOGON32_LOGON_NETWORK, WindowsUserSpecificSettings.LogonProvider.LOGON32_PROVIDER_DEFAULT, out this.m_UserToken)) { throw new Win32Exception(); } WindowsUserSpecificSettings.PROFILEINFO lpProfileInfo = new WindowsUserSpecificSettings.PROFILEINFO(); lpProfileInfo.dwFlags = 1; lpProfileInfo.lpServerName = string.Empty; lpProfileInfo.lpUserName = user; lpProfileInfo.dwSize = Marshal.SizeOf((object)lpProfileInfo); if (!WindowsUserSpecificSettings.LoadUserProfile(this.m_UserToken, ref lpProfileInfo)) { throw new Win32Exception(); } this.m_RegHandle = new SafeRegistryHandle(lpProfileInfo.hProfile, false); this.m_RegHive = RegistryKey.FromHandle(this.m_RegHandle, RegistryView.Default); }
private static extern bool LoadUserProfile(IntPtr hToken, ref WindowsUserSpecificSettings.PROFILEINFO lpProfileInfo);