我们有一个使用映射网络驱动器的传统CRM系统(服务器)。问题是驱动器完全打开以供任何用户修改。外部程序执行模拟模式
我想在c#.net控制台应用程序(客户端A)中使用用户模拟。
客户端A执行一个.exe程序(控制台应用程序),这使得模拟(域,另一个用户,密码)。
然后控制台应用程序的网络文件夹映射到一个驱动:
NETRESOURCE nr = new NETRESOURCE();
nr.dwType = ResourceType.RESOURCETYPE_DISK;
nr.lpLocalName = "X:";
nr.lpRemoteName = @"\\x.x.x.x\folderx";
nr.lpProvider = null;
int result = WNetAddConnection2(nr, null, null, 0);
- 然后,控制台应用程序试图打开位于进映射一个。exe程序网络驱动器
- Windows用户登录到域
- 用户打开一个程序,使模拟,映射网络文件夹,驱动器和最后将CRM可执行文件作为模拟用户调用,但是,网络驱动器必须仅在CRM上下文中可用。
Process ExternalProcess = new Process();
ExternalProcess.StartInfo.FileName = @"X:\subfolder\APP\app.exe"; // Window application
ExternalProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
ExternalProcess.Start();
ExternalProcess.WaitForExit();
,但我得到Win32Exception:
Unknown error (0xfffffffe)
in System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
in System.Diagnostics.Process.Start()
in SecureApp.Program.Main(String[] args) en \\vmware-host\Shared Folders\Documents\Visual Studio 2010\Projects\SecureApp\SecureApp\Program.cs:línea 142
in System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
in System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
in Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
in System.Threading.ThreadHelper.ThreadStart_Context(Object state)
in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
in System.Threading.ThreadHelper.ThreadStart()
文件夹共享属性具有在模拟中使用的用户作为唯一可以读取&写入的用户。
总之,我希望我的外部程序作为模拟用户执行。
编辑
这里有一个我想要真正做到:
我的观点是:我可以映射的网络驱动器仅适用于以模拟用户身份执行的程序,但不适用于当前登录的Windows用户?
您是否已验证相关帐户对目标文件夹具有读取和执行权限,而不仅仅是读取权限?另外,您使用的是哪个版本的.Net框架? – Robert
是的,罗伯特。该帐户具有完整的读取和写入权限。框架版本是4. – Kingslayerpy
如果可执行文件存储在本地,程序是否工作?此外,当您尝试此操作时会发生什么情况:ExternalProcess.StartInfo.FileName = @“\\ x.x.x.x \ folderx \ subfolder \ APP \ app。exe“ – Robert