新しいWindowsユーザーを作成し、管理者権限を割り当てています
net UserName Password /add
net localgroup administrators UserName /add
この時点で、ユーザーが作成されますが、実際には読み込まれていません。たとえば、C:\Users\UserName
フォルダーはまだ作成されていません。
その後、使用してユーザーになりすますいくつかのプロセスを実行します
psexec -i -h -u UserName -p Password process.exe
この後、ユーザー用にいくつかの追加のものがロードされます。それは C:\Users\UserName
とシステム レジストリで確認できますが、ローミング プロファイルの一部がまだ欠落しています。
特に、作成されていないフォルダーを見ていますC:\Users\TestUser\AppData\Roaming\Microsoft\Windows\libraries
(注: これは win10 にのみ当てはまり、win7 では作成されます)。このフォルダは、デスクトップ ログインを介してユーザーでログインする場合にのみ作成されるようです。
デスクトップを介してログインするのと同じ方法で(または少なくともC:\Users\TestUser\AppData\Roaming\Microsoft\Windows\libraries
作成されるように)ユーザーがロードされるように、ユーザーの初期化を完了するにはどうすればよいですか。
使ってみましLoadUserProfile
たが、今のところ運がありません
IntPtr hUser = IntPtr.Zero;
try
{
bool result = LogonUser(
userName, null, password,
LOGON_TYPE.LOGON32_LOGON_NETWORK,
LOGON_PROVIDER.LOGON32_PROVIDER_DEFAULT,
out hUser);
if (result == false)
{
Exception ex = new System.ComponentModel.Win32Exception(
Marshal.GetLastWin32Error());
throw ex;
}
PROFILEINFO profileInfo = new PROFILEINFO();
profileInfo.dwSize = Marshal.SizeOf(profileInfo);
profileInfo.lpUserName = Environment.MachineName+ @"\" + userName;
result = LoadUserProfile(
hUser, ref profileInfo);
if (result == false)
{
Exception ex = new System.ComponentModel.Win32Exception(
Marshal.GetLastWin32Error());
throw ex;
}
}
finally
{
if (hUser != IntPtr.Zero)
{
CloseHandle(hUser);
}
}
C#、powershell、またはバッチ スクリプトのソリューションであれば、それが可能です。