Map network drive for user using VB/ASP.NET

B

Brian Nicholson

Hello,

I'm trying to create an admin page that can run miscellaneous scripts for
our IT department. Currently, I'm trying to create a script that can map a
network drive for a user (e.g. a form where I can input \\path\folder, drive
letter, and domain\user). Is this possible? If so, can someone point me in
the right direction?

Thank you,
Brian Nicholson
 
K

kimiraikkonen

Hello,

I'm trying to create an admin page that can run miscellaneous scripts for
our IT department. Currently, I'm trying to create a script that can map a
network drive for a user (e.g. a form where I can input \\path\folder, drive
letter, and domain\user). Is this possible? If so, can someone point me in
the right direction?

Thank you,
Brian Nicholson

Hi,
If you're meaning to transfer files across computers that are on the
same network, you can simply use it by calling mapped computer's name
with UNC path or network IP address:

My.Computer.Network.DownloadFile("\\MAPPED_PC\folder\file.exe",c:
\file.exe")

Additionaly, you need to set networkCredentials parameter if your
drives require network authentecation.

Hope this helps,

Onur Güzel
 
K

kimiraikkonen

Hi,
If you're meaning to transfer files across computers that are on the
same network, you can simply use it by calling mapped computer's name
with UNC path or network IP address:

My.Computer.Network.DownloadFile("\\MAPPED_PC\folder\file.exe",c:
\file.exe")

Additionaly, you need to set networkCredentials parameter if your
drives require network authentecation.

Hope this helps,

Onur Güzel

However you can do it also with System.IO.File.Copy using UNC

and, correcting my previous syntax as:

My.Computer.Network.DownloadFile("\\MAPPEDPC\\file.exe","c:\file.exe")

or one of System.IO.File's methods to work with your mapped drive on
domain / workgroups using proper credentials.

HTH,

Onur G.
 
M

Mr. Arnold

Brian Nicholson said:
Hello,

I'm trying to create an admin page that can run miscellaneous scripts for
our IT department. Currently, I'm trying to create a script that can map a
network drive for a user (e.g. a form where I can input \\path\folder,
drive
letter, and domain\user). Is this possible? If so, can someone point me in
the right direction?

As someone else said, you might not find a VB example, and as a good .Net
programmer, you need to know C# and VB. It's not that hard to translate.
There is no reason that you can't use the class for an ASP.Net solution.

There is also no reason you couldn't just take the class talked about as is,
compile as a C# dll, and set reference to the DLL and use it in your VB
project.

http://www.codeproject.com/KB/system/mapnetdrive.aspx
 
B

Brian Nicholson

Mr. Arnold said:
As someone else said, you might not find a VB example, and as a good .Net
programmer, you need to know C# and VB. It's not that hard to translate.
There is no reason that you can't use the class for an ASP.Net solution.

There is also no reason you couldn't just take the class talked about as is,
compile as a C# dll, and set reference to the DLL and use it in your VB
project.

http://www.codeproject.com/KB/system/mapnetdrive.aspx
Thank you for the response. I have no problems using C# code; I just asked
that initially because it's what I'm most familiar with. I've come across
that class before, but the problem is that it requires the password of the
user I'm mapping a network drive for. I was hoping there was some way I
could use IIS Windows Authentication or something similar to do this with an
account that has administrative rights, so I wouldn't be required to know the
user's password.
 
B

Brian Nicholson

Brian Nicholson said:
Thank you for the response. I have no problems using C# code; I just asked
that initially because it's what I'm most familiar with. I've come across
that class before, but the problem is that it requires the password of the
user I'm mapping a network drive for. I was hoping there was some way I
could use IIS Windows Authentication or something similar to do this with an
account that has administrative rights, so I wouldn't be required to know the
user's password.
I posted this same question in the ASP.NET newsgroup -- it appears what I
would like to do isn't feasible without resorting to ActiveX. Thanks for the
replies.
 
M

Mr. Arnold

Brian Nicholson said:
I posted this same question in the ASP.NET newsgroup -- it appears what I
would like to do isn't feasible without resorting to ActiveX. Thanks for
the
replies.

I kind of doubt that.
 
M

Mr. Arnold

Brian Nicholson said:
Thank you for the response. I have no problems using C# code; I just
asked
that initially because it's what I'm most familiar with. I've come across
that class before, but the problem is that it requires the password of the
user I'm mapping a network drive for. I was hoping there was some way I
could use IIS Windows Authentication or something similar to do this with
an
account that has administrative rights, so I wouldn't be required to know
the
user's password.

I don't see why you couldn't use a generic user-id and psw that had admin
rights, but of course this application should never face the Internet.
 
B

Brian Nicholson

Mr. Arnold said:
I don't see why you couldn't use a generic user-id and psw that had admin
rights, but of course this application should never face the Internet.

That's exactly what I would like to do, but I don't see how that could be
done with this class (or other methods I've found). If I were to supply an
admin username/password, it would map the drive to that admin user -- I want
to perform this task under an admin account, but the drive should actually be
mapped for another user.

As for doubting the impossibility of doing this without ActiveX, you might
be right -- I think the Microsoft MVP may have misunderstood what I was
trying to do.
 
B

Brian Nicholson

Brian Nicholson said:
That's exactly what I would like to do, but I don't see how that could be
done with this class (or other methods I've found). If I were to supply an
admin username/password, it would map the drive to that admin user -- I want
to perform this task under an admin account, but the drive should actually be
mapped for another user.

As for doubting the impossibility of doing this without ActiveX, you might
be right -- I think the Microsoft MVP may have misunderstood what I was
trying to do.

Scratch that -- I originally thought that the username and password were for
the destination of the drive mapping, but it makes more sense that the
username and password is to simply supply credentials for mapping the drive
on the local computer. I guess my question then is how do I get this script
to execute on a specified computer other than the web server?
 
B

Brian Nicholson

Good question -- as far as I know, it's a matter of convenience. Users
constantly access the same network folders, and it's a pain to have to browse
to the folder each time something needs to be saved/accessed. Users call in
requesting to have a certain directory mapped as a drive, so it would be
convenient to have a web app that can do this for us.
 
S

Stephany Young

In that case, attempting to map such 'drives' from a client-side script
executed in a web-browser would open up such a can of worms from a security
point of view that you would be, effectively, wruting your own letter of
resignation.

To get things in perspective, how many users are you talking about and how
many such requests do you receive per day, per week, per month etc.?
 
R

rowe_newsgroups

Scratch that -- I originally thought that the username and password were for
the destination of the drive mapping, but it makes more sense that the
username and password is to simply supply credentials for mapping the drive
on the local computer.  I guess my question then is how do I get this script
to execute on a specified computer other than the web server?

To me, the easiest solutions would be to write a small Window's app
that maps the network drive and then publish that application to your
website. Then, using ClickOnce deployment, all a user would have to do
is click the link, select 'Run', and then the window's app would run
and map the drive. The nice thing is that since it's a Window's app,
you can easily run impersonation and run the "map drive" commands
under an admin account, invisible to the user.

Thanks,

Seth Rowe [MVP]
http://sethrowe.blogspot.com/
 
B

Brian Nicholson

Thank you for the security concerns -- can you explain how this would be such
a security risk? The script would use IIS Integrated Windows Authentication
(or something similar) to gain the necessary permissions to execute. I
thought that running machine-related tasks from scripts using VBScript etc.
in ASP.NET was a relatively common practice?
 
B

Brian Nicholson

rowe_newsgroups said:
To me, the easiest solutions would be to write a small Window's app
that maps the network drive and then publish that application to your
website. Then, using ClickOnce deployment, all a user would have to do
is click the link, select 'Run', and then the window's app would run
and map the drive. The nice thing is that since it's a Window's app,
you can easily run impersonation and run the "map drive" commands
under an admin account, invisible to the user.

Thanks,

Seth Rowe [MVP]
http://sethrowe.blogspot.com/

That sounds pretty similar to what I'd like to do, but the part I'm stuck on
is actually creating the app that maps the drive. So far, I've been
unsuccessful finding any kind of method or class that can map a drive
*remotely*...if such a thing even exists.
 
R

rowe_newsgroups

That sounds pretty similar to what I'd like to do, but the part I'm stuck on
is actually creating the app that maps the drive.  So far, I've been
unsuccessful finding any kind of method or class that can map a drive
*remotely*...if such a thing even exists.

This wouldn't be remotely, it would be running from the user's
physical computer. I'm starting to think I misunderstood what you are
looking for.

Are you trying to map a user from an admin's machine? If so I'd say
scrap the .NET and go for a simple login script that would be ran when
the user logs into his PC. I'm not an admin by any means, but I know
that's how the network admin at my old job mapped user drives.

Thanks,

Seth Rowe [MVP]
http://sethrowe.blogspot.com/
 
B

Brian Nicholson

rowe_newsgroups said:
This wouldn't be remotely, it would be running from the user's
physical computer. I'm starting to think I misunderstood what you are
looking for.

Are you trying to map a user from an admin's machine? If so I'd say
scrap the .NET and go for a simple login script that would be ran when
the user logs into his PC. I'm not an admin by any means, but I know
that's how the network admin at my old job mapped user drives.

Thanks,

Seth Rowe [MVP]
http://sethrowe.blogspot.com/

Yeah, that's where it all seems to be leading. I'm pretty sure that's what
the IT dept. does now (I'm just a summer intern), but they're trying to get
me to make a page that makes the process a little simpler. I've never used
WMI (or heard of it, as a matter of fact, before today), but it sounds like
I'll have to use it to update profiles of users to do this.
 
B

Brian Nicholson

Patrice said:
And the user would just choose from predefined mapping in this page ? Don't
you have a logon script in place ? IMO it would be much better to do that
from a logon script (using kixtart, you can test in which group the user is
to map the appropriate drives). If not already done I would recommend also
having always the same letter mapped to the same location.

Your logon script (example taken from the
http://www.bluestream.org/Windows/LoginScripting.htm link I posted ealier)
could look like :

IF INGROUP("Accounting")
USE T: "\\SERVER1\TAXSOFT"
ENDIF
etc...

IMO you should direct your admins to an admin group so that they can see how
it is usually done using a login script. It may require a bit of work to put
that in place especially if all users have used random letters for a given
location accross your company, but then it will basically done
automatically once the rules are defined making this much easier to handle
for both admins and users.

For example when you put a new location or if you migrate content from one
server to another your admins will have just to update the logon script and
this is done for all users concerned with these changes the next time they
log. You won't have to tell each targeted user to go to a web page to hand
select the new mapping(s). Etc...

Well not the users themselves mapping the drives -- the IT department would
still do that. I'm basically making an IT admin page where the most commonly
used administrative functions are grouped together so they don't have to
branch out all over the place to perform various tasks.

It sounds like it will have to be done from a logon script, like you said;
I'm still hoping to use ASP.NET if possible as a means to populate the
script, then perhaps use WMI to make the changes.
 
R

rowe_newsgroups

Well not the users themselves mapping the drives -- the IT department would
still do that.  I'm basically making an IT admin page where the most commonly
used administrative functions are grouped together so they don't have to
branch out all over the place to perform various tasks.

It sounds like it will have to be done from a logon script, like you said;
I'm still hoping to use ASP.NET if possible as a means to populate the
script, then perhaps use WMI to make the changes.

I'd say the best you can hope for is to create an ASP.NET page that
takes information from the user and then generates the script that
needs to be ran from a login script. Simplest way would be to just
output the script into a textbox on the page so that the user could
tweak the script manually if need be.

Also, if the login script that is to be ran has any logic behind it
(say every morning the script to run is pulled from a network file
path) then your ASP.NET page could modify that file so that the next
time the new file is copied over for users to run it would contain
your updated version. I don't really know if this would work, like I
said I'm not a net admin so I'm not sure if this option is even
viable.

Thanks,

Seth Rowe [MVP]
http://sethrowe.blogspot.com/
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top