使用日期格式 Windows 10 v.1703 的问题 CreateProcessWithLogonW
Problem CreateProcessWithLogonW with Date Format Windows 10 v.1703
我有以下代码,我在其中使用外部来源中提供的其他 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 版本中,并且在我尝试过的所有版本中共享相同的日期格式。
最后我找到了一个对我有帮助的解决方案。
我只是创建了一个 bat 文件,我在其中更改了系统日期格式,然后 运行 我的 .exe
@echo off
reg add "HKCU\Control Panel\International" /f /v sShortDate /t REG_SZ /d "dd/MM/yyyy" >nul
app.exe
这对我有用。
我有以下代码,我在其中使用外部来源中提供的其他 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 版本中,并且在我尝试过的所有版本中共享相同的日期格式。
最后我找到了一个对我有帮助的解决方案。
我只是创建了一个 bat 文件,我在其中更改了系统日期格式,然后 运行 我的 .exe
@echo off
reg add "HKCU\Control Panel\International" /f /v sShortDate /t REG_SZ /d "dd/MM/yyyy" >nul
app.exe
这对我有用。