Solved

Unable to device as Administrator

Posted on 2010-11-24
4
676 Views
Last Modified: 2012-08-13
I have a weird issue. I have created a program that maps a drive to a folder using DefineDosDevice.  The program works great as a standard user.  I see the folder with the appropriate drive letter.  Once I run the program as an administrator it won;t map the folder.  Here is the function that does the work.

Private Function CreateDevice(DeviceName As String, PathName As String) As String
    If DefineDosDevice(0, DeviceName, PathName) = 0 Then
        MsgBox "Unable to create device " & DeviceName, vbCritical
        CreateDevice = vbNullString
    Else
        CreateDevice = DeviceName
        DoEvents
    End If
End Function

How can I make it work as a standard user and a Administrator.  Thanks.
0
Comment
Question by:elizarrj
  • 2
4 Comments
 
LVL 26

Expert Comment

by:EDDYKT
ID: 34208093
what is an error?
print out what is err.number and err.description
0
 

Author Comment

by:elizarrj
ID: 34209209
No error is generated. It just does not map the drive when running the program in administor mode.  It does map a drive when run as non administrator.  I did verify that the folder is correct under both scenerios.
0
 
LVL 26

Assisted Solution

by:EDDYKT
EDDYKT earned 100 total points
ID: 34209478
that's strange,
you may want to use WMI or net use to map the drive
0
 
LVL 29

Accepted Solution

by:
nffvrxqgrcfqvvc earned 400 total points
ID: 34209809
You may want to use SetVolumeMountPoint() function instead of DefineDosDevice

SetVolumeMountPoint
http://msdn.microsoft.com/en-us/library/aa365561(v=VS.85).aspx
Option Explicit



Private Declare Function SetVolumeMountPointW Lib "Kernel32.dll" (ByVal lpszVolumeMountPoint As Long, ByVal lpszVolumeName As Long) As Long

Private Declare Function GetVolumeNameForVolumeMountPointW Lib "Kernel32.dll" (ByVal lpszVolumeMountPoint As Long, ByVal lpszVolumeName As Long, ByVal cchBufferLength As Long) As Long





Private Function GetVolumeGuid(ByVal drive As String) As String

    Dim Buffer(128) As Byte

    If GetVolumeNameForVolumeMountPointW(StrPtr(drive), VarPtr(Buffer(0)), 128) Then

        GetVolumeGuid = Left$(Buffer, InStr(Buffer, vbNullChar) - 1)

    Else

        GetVolumeGuid = vbNullString

    End If

End Function



Private Sub Form_Load()

 

    Call SetVolumeMountPointW(StrPtr("c:\test\"), StrPtr(GetVolumeGuid("E:\")))

 

End Sub

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction While answering a recent question (http://www.experts-exchange.com/Q_27402310.html) in the VB classic zone, I wrote some VB code in the (Office) VBA environment, rather than fire up my older PC.  I didn't post completely correct code o…
The debugging module of the VB 6 IDE can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture.   There is also a companion Debug Toolbar that looks like the followin…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

930 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now