0

外部ソースで提供された他の Windows 資格情報を使用してプロセスを起動する次のコードがあります。

コード:

 public static void ImpersonateProcess_WithProfile(string appPath, string domain,
        string user, string password)
    {
        ImpersonateProcess(appPath, domain, user, password, LogonFlags.LOGON_WITH_PROFILE);
    }

    private static void ImpersonateProcess(string appPath, string domain, string user,
        string password, LogonFlags lf)
    {
        StartupInfo si = new StartupInfo();
        si.cb = Marshal.SizeOf(typeof(StartupInfo));
        ProcessInfo pi = new ProcessInfo();

        if (CreateProcessWithLogonW(user, domain, password,
        lf,
        appPath, null,
        0, IntPtr.Zero, null,
        ref si, out pi))
        {
            CloseHandle(pi.hProcess);
            CloseHandle(pi.hThread);
        }
        else
        {
            throw new System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error());
        }
    }

このプログラムは、Windows 7、8、および10のバージョンで完全に機能します..

しかし、Windows 10 バージョン 1703 では、日付形式によるエラーに対処しています (実行中のプロセスの検証によってスローされたエラー) .. なぜこのバージョンでのみ発生するのかわかりません。

実行中のプロセスが日付形式が dd / MM / yyyy であることを想定しているため、エラーが発生します。しかし、繰り返しますが、これはこのバージョンの Windows 10 でのみ発生し、試したすべてのバージョンで同じ日付形式を共有しています。

4

1 に答える 1