2014-07-22 78 views
1

使用模擬我試圖讀取共享文件夾中位於網絡上的文件。但是我得到了「訪問被拒絕」的錯誤。我的源代碼如下:java中的用戶模擬

這適用於本地資源。但在訪問網絡資源時會出錯。線 \服務器\共享\的abc.txt

// Create a provider that implements Windows authentication functions 
    IWindowsAuthProvider prov = new WindowsAuthProviderImpl(); 

    // Login using different user 
    IWindowsIdentity identity = prov.logonDomainUser("abc.jim","abc.com", "[email protected]"); 
    IWindowsImpersonationContext context = identity.impersonate(); 

    // Reading file using new user 
    readFile(); // It gives error - Access is denied 

    // Revert back to original logged user 
    context.revertToSelf(); 

    readFile(); // It is working properly 

    // Cleanup the Windows identity 
    identity.dispose(); 

回答

2

最後我能夠通過創建使用JNI一個本地C庫來解決這個問題。使用API​​

本地Windows是

LogonUser : http://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v=vs.85).aspx 
ImpersonateLoggedOnUser : http://msdn.microsoft.com/en-us/library/windows/desktop/aa378612(v=vs.85).aspx 
RevertToSelf : http://msdn.microsoft.com/en-us/library/windows/desktop/aa379317(v=vs.85).aspx