2011-06-13 44 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

相关问题