如何解决Process.Start 使用其他用户凭据导致 Win32exception:我们无法使用此凭据登录您,因为您的域不可用
C# Process.Start 使用不同的用户名和域导致 Win32exception:我们无法使用此凭据登录您,因为您的域不可用。
但是,我能够使用 Win32 API CreateProcessWithlogonW
以下 C# 代码导致上述异常:
processstartinfo startinfo = new processstartinfo();
startinfo.CreateNowindow = false;
startinfo.UseShellExecute = false;
startinfo.FileName = "xyz";
startinfo.Arguments = "abc"
startinfo.RedirectStandardOutput = false;
startinfo.RedirectStandardError = false;
startinfo.UserName = "administrator";
startinfo.Domain = "abcde";
securestring thesecurestring = new NetworkCredential("","Password").SecurePassword;
startinfo.Password = thesecurestring;
Process extractimage = Process.Start(startinfo);
但是,当我将以下 Win32 API CreateProcessWithlogonW
与 pinvoke 一起使用时,该进程成功启动:
string appName="xyz";
string args = "abc";
string commandLine = appName + args;
PROCESS_informatION pi;
STARTUPINFO si = new STARTUPINFO();
si.dwFlags |= (int)STARTF.STARTF_USESTDHANDLES;
si.wShowWindow = 0;
si.cb = Marshal.SizeOf(si);
CreateProcessWithlogonW("administrator","abcde","Password",logonFlags.NetCredentialsOnly,null,commandLine,CreationFlags.DefaultErrorMode,"D:\\",ref si,out pi)
谁能帮我理解为什么 System.Diagnostic.Process 不会使用与 CreateProcessWithlogonW
一起使用的相同凭据启动进程?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。