How to create Folder when you do not have rights but have admin userName and pwd
-
Hello There My application is running in an environment where security policy does not allow the application to create folder on d drive. but my Application does have the Administrator UserName and Password. I want to create folder using Admin Credentials or you can say my application should run with Admin Rights no matter what ever the rights are for the logged on user. Any helpful code or any Arcticle link would be highly appreciated. Regards
-
Hello There My application is running in an environment where security policy does not allow the application to create folder on d drive. but my Application does have the Administrator UserName and Password. I want to create folder using Admin Credentials or you can say my application should run with Admin Rights no matter what ever the rights are for the logged on user. Any helpful code or any Arcticle link would be highly appreciated. Regards
Found this code, its not tested but gives you a pointer in imperonating another user.
Imports System
Imports System.Runtime.InteropServices
Imports System.Security.Principal
Imports System.Security.PermissionsPublic Class Impersonation
_
Public Shared Function LogonUser(lpszUsername As String, lpszDomain As
String, lpszPassword As String, _
dwLogonType As Integer, dwLogonProvider As Integer, ByRef
phToken As Integer) As Boolean
End Function_
Public Shared Function GetLastError() As Integer
End FunctionPublic Shared Sub Main(args() As String)
'The Windows NT user token.
Dim token1 As Integer'Get the user token for the specified user, machine, and password
using the unmanaged LogonUser method.'The parameters for LogonUser are the user name, computer name,
password,
'Logon type (LOGON32_LOGON_NETWORK_CLEARTEXT), Logon provider
(LOGON32_PROVIDER_DEFAULT),
'and user token.
Dim loggedOn As Boolean = LogonUser("bob", "AARDVARK", "coffee", 3, 0,
token1)
Console.WriteLine("LogonUser called")'Call GetLastError to try to determine why logon failed if it did not
succeed.
Dim ret As Integer = GetLastError()Console.WriteLine("LogonUser Success? " + loggedOn)
Console.WriteLine("NT Token Value: " + token1)
If ret <> 0 Then
Console.WriteLine("Error code (126 == ""Specified module could not
be found""): " + ret)
End If'Starting impersonation here:
Console.WriteLine("Before impersonation:")
Dim mWI1 As WindowsIdentity = WindowsIdentity.GetCurrent()
Console.WriteLine(mWI1.Name)
Console.WriteLine(mWI1.Token)Dim token2 As IntPtr = new IntPtr(token1)
Console.WriteLine("New identity created:")
Dim mWI2 As WindowsIdentity = new WindowsIdentity(token2)
Console.WriteLine(mWI2.Name)
Console.WriteLine(mWI2.Token)'Impersonate the user.
Dim mWIC As WindowsImpersonationContext = mWI2.Impersonate()Console.WriteLine("After impersonation:")
Dim mWI3 As WindowsIdentity = WindowsIdentity.GetCurrent()
Console.WriteLine(mWI3.Name)
Console.WriteLine(mWI3.Token)'Revert to previous identity.
mWIC.Undo()Console.WriteLine("After impersonation is reverted:")
Dim mWI4 As WindowsIdentity = WindowsIdentity.GetCurrent()
Console.WriteLine(mWI4.Name)
Console.WriteLine(mWI4.Token)
End Sub
End Class -
Found this code, its not tested but gives you a pointer in imperonating another user.
Imports System
Imports System.Runtime.InteropServices
Imports System.Security.Principal
Imports System.Security.PermissionsPublic Class Impersonation
_
Public Shared Function LogonUser(lpszUsername As String, lpszDomain As
String, lpszPassword As String, _
dwLogonType As Integer, dwLogonProvider As Integer, ByRef
phToken As Integer) As Boolean
End Function_
Public Shared Function GetLastError() As Integer
End FunctionPublic Shared Sub Main(args() As String)
'The Windows NT user token.
Dim token1 As Integer'Get the user token for the specified user, machine, and password
using the unmanaged LogonUser method.'The parameters for LogonUser are the user name, computer name,
password,
'Logon type (LOGON32_LOGON_NETWORK_CLEARTEXT), Logon provider
(LOGON32_PROVIDER_DEFAULT),
'and user token.
Dim loggedOn As Boolean = LogonUser("bob", "AARDVARK", "coffee", 3, 0,
token1)
Console.WriteLine("LogonUser called")'Call GetLastError to try to determine why logon failed if it did not
succeed.
Dim ret As Integer = GetLastError()Console.WriteLine("LogonUser Success? " + loggedOn)
Console.WriteLine("NT Token Value: " + token1)
If ret <> 0 Then
Console.WriteLine("Error code (126 == ""Specified module could not
be found""): " + ret)
End If'Starting impersonation here:
Console.WriteLine("Before impersonation:")
Dim mWI1 As WindowsIdentity = WindowsIdentity.GetCurrent()
Console.WriteLine(mWI1.Name)
Console.WriteLine(mWI1.Token)Dim token2 As IntPtr = new IntPtr(token1)
Console.WriteLine("New identity created:")
Dim mWI2 As WindowsIdentity = new WindowsIdentity(token2)
Console.WriteLine(mWI2.Name)
Console.WriteLine(mWI2.Token)'Impersonate the user.
Dim mWIC As WindowsImpersonationContext = mWI2.Impersonate()Console.WriteLine("After impersonation:")
Dim mWI3 As WindowsIdentity = WindowsIdentity.GetCurrent()
Console.WriteLine(mWI3.Name)
Console.WriteLine(mWI3.Token)'Revert to previous identity.
mWIC.Undo()Console.WriteLine("After impersonation is reverted:")
Dim mWI4 As WindowsIdentity = WindowsIdentity.GetCurrent()
Console.WriteLine(mWI4.Name)
Console.WriteLine(mWI4.Token)
End Sub
End Class