所以,基本上我正在做的是尝试在远程工作站上打开\\whatever\c$。我首先要说应用程序是使用 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
执行的
现在,当有人执行应用程序时,他们实际上使用的域和用户名/密码与用于登录工作站的域和用户名/密码不同。在应用程序中,我可以做任何我想做的事。但现在我想要完成的是有一个按钮链接到\whatever\c$ 并在资源管理器中打开它,这样我就可以查看一些文件,但是我不想每次都输入密码。特别是考虑到它与我用来打开应用程序的凭据相同。任何帮助,将不胜感激。这是我当前使用的代码。
string startlocation = @"\\" + textBox1.Text + @"\C$";
System.Diagnostics.ProcessStartInfo pcsi = new System.Diagnostics.ProcessStartInfo();
pcsi.FileName = "explorer.exe";
pcsi.Arguments = startlocation;
System.Diagnostics.Process.Start(pcsi);
据我所知,这应该会自动传递打开应用程序时使用的凭据。但它仍然打开 UAC 要求凭据。我卡住了。
附注当我在 SO 上寻找类似情况时,我注意到很多其他人都在询问如何使用其他凭据打开它或模拟这不是我想要做的。我想使用用于打开应用程序的凭据。
最佳答案
根据我的经验,Windows 不传递凭据的主要原因是服务器主体名称 (SPN),如果您不知道它们,一定要读一读。
关于C# 试图打开远程文件位置但 Windows 未传递凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31813707/