2011-06-13 43 views
2

我正在創建一個winforms文檔管理器。我想允許用戶上傳到受保護的網絡驅動器並打開文檔。使用用戶名和密碼打開文件

將爲應用程序設置特定的用戶名和密碼,以便只有應用程序才能訪問這些文件。

通常,當我允許用戶打開文件時,我使用OpenFileDialog命令。我如何添加用戶名和密碼?

謝謝。

EDIT

找到一些額外的代碼:

Public Class ImpersonateUser 

Private Declare Auto Function LogonUser Lib "advapi32.dll" (_ 
    ByVal lpszUsername As String, _ 
    ByVal lpszDomain As String, _ 
    ByVal lpszPassword As String, _ 
    ByVal dwLogonType As Int32, _ 
    ByVal dwLogonProvider As Int32, _ 
    ByRef phToken As IntPtr _ 
) As Int32 


Private Declare Auto Function ImpersonateLoggedOnUser Lib "advapi32.dll" (_ 
    ByVal hToken As IntPtr _ 
) As Int32 


Declare Auto Function RevertToSelf Lib "advapi32.dll" (_ 
) As Int32 


Private Function ImpersonateValidUser(_ 
    ByVal Username As String, _ 
    ByVal Domain As String, _ 
    ByVal Password As String _ 
) As Boolean 
    Dim LogonType As Int32 
    Dim LogonProvider As Int32 
    Dim Tk As IntPtr 
    LogonType = 2  ' Interactive. 
    LogonProvider = 0 ' Default Provider. 
    If LogonUser(Username, Domain, Password, LogonType, LogonProvider, Tk) <> 0 Then 
     Return (ImpersonateLoggedOnUser(Tk) <> 0) 
    End If 

    Return False 
End Function 


Private Sub UndoImpersonation() 
    RevertToSelf() 
End Sub 


Sub test() 

    If ImpersonateValidUser("accountname", "Domainname", "password") Then 


     ' This code runs unter the privileges of the impersonated user. 
     Process.Start("C:\foo.exe") 
     UndoImpersonation() 
    End If 
End Sub 


End Class 

信用原作者,是否有任何優點/缺點,使用該方法?

+1

你在的地方有一個用戶認證系統已經爲你的用戶?如果是這樣,它是什麼樣的? – 2011-06-13 02:00:21

+0

我們的大部分客戶都會使用windows server,所以有活動目錄。儘管我打開所有的建議。 – Reafidy 2011-06-13 02:15:59

回答

1
+0

謝謝我看到了這個鏈接,但由於某種原因被愚蠢地解僱了,我推測你是指代碼而不是其中的一個鏈接。你能告訴我 - 在冒充的過程中應用程序失敗的危險是什麼?對於原始用戶,Windows仍能正常工作嗎? – Reafidy 2011-06-14 03:10:08

+0

另外:我剛剛發現「advapi32.dll」庫見我上面的編輯。哪種方法更加可行? – Reafidy 2011-06-15 21:53:45

+0

該代碼不適用於我,因爲Process.Start不能在模擬下運行,所以我無法打開該文件。 – Reafidy 2011-06-22 03:15:53

相關問題