我有一個工具,我用它來編程創建本地用戶帳戶如下:LoadUserProfile不創建本地用戶配置文件,當它不存在[C#]
DirectoryEntry NewUser = dirEntryLocalMachine.Children.Add("UserName", "user");
NewUser.Invoke("SetPassword", new object[] { "Passsord" });
NewUser.Invoke("Put", new object[] { "Description", "Description" });
NewUser.CommitChanges();
的帳戶創建好的,但在此時用戶配置文件不存在(沒有HKEY當前用戶,沒有文檔&設置等),我正在做一些研究,並發現以下MSDN文章,稱調用LoadUserProfile(...)實際上會創建配置文件如果它不存在:
How To Programmatically Cause the Creation of a User's Profile
所以我添加的代碼如下:
IntPtr hToken = IntPtr.Zero;
bool bLogon = LogonUser(
sName,
sDomain,
sPassword,
LOGON32_LOGON_NETWORK,
LOGON32_PROVIDER_DEFAULT,
out hToken
);
PROFILEINFO profileInfo = new PROFILEINFO();
profileInfo.dwSize = Marshal.SizeOf(profileInfo);
profileInfo.dwFlags = 1;
profileInfo.lpUserName = sName;
bool bLoad = LoadUserProfile(hToken, ref profileInfo);
現在,無論bLogon和BLOAD是真實的,沒有出現異常,一切「似乎」,以做工精細... 不更新profileInfo的內容(我會假設領域像.lpProfilePath應該有很好的價值)和GetUserProfileDirectory()無法找到路徑(顯然 - 它不存在) - 我也手動檢查,並沒有什麼在「帳戶&設置」下的新帳戶。
任何人有任何線索,我做錯了什麼?
任何幫助將不勝感激。 謝謝,
你確定你在管理員管理下運行該程序嗎? – 2009-09-26 15:51:05