1

新しい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、またはバッチ スクリプトのソリューションであれば、それが可能です。

4

0 に答える 0