2016-04-25 113 views
4

我们有一个使用映射网络驱动器的传统CRM系统(服务器)。问题是驱动器完全打开以供任何用户修改。外部程序执行模拟模式

我想在c#.net控制台应用程序(客户端A)中使用用户模拟。

  1. 客户端A执行一个.exe程序(控制台应用程序),这使得模拟(域,另一个用户,密码)。

  2. 然后控制台应用程序的网络文件夹映射到一个驱动:

 

    
    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程序网络驱动器
  •  
    
        
        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() 
     
    
    

    文件夹共享属性具有在模拟中使用的用户作为唯一可以读取&写入的用户。

    总之,我希望我的外部程序作为模拟用户执行。

    编辑

    这里有一个我想要真正做到:

    1. Windows用户登录到域
    2. 用户打开一个程序,使模拟,映射网络文件夹,驱动器和最后将CRM可执行文件作为模拟用户调用,但是,网络驱动器必须仅在CRM上下文中可用。

    我的观点是:我可以映射的网络驱动器仅适用于以模拟用户身份执行的程序,但不适用于当前登录的Windows用户?

    +0

    您是否已验证相关帐户对目标文件夹具有读取和执行权限,而不仅仅是读取权限?另外,您使用的是哪个版本的.Net框架? – Robert

    +0

    是的,罗伯特。该帐户具有完整的读取和写入权限。框架版本是4. – Kingslayerpy

    +0

    如果可执行文件存储在本地,程序是否工作?此外,当您尝试此操作时会发生什么情况:ExternalProcess.StartInfo.FileName = @“\\ x.x.x.x \ folderx \ subfolder \ APP \ app。exe“ – Robert

    回答