Discussion:
Map network drive for user using VB/ASP.NET
(too old to reply)
Brian Nicholson
2008-06-29 20:42:00 UTC
Permalink
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
kimiraikkonen
2008-06-29 22:09:20 UTC
Permalink
On Jun 29, 11:42 pm, Brian Nicholson
Post by 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
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
kimiraikkonen
2008-06-29 22:17:33 UTC
Permalink
Post by kimiraikkonen
On Jun 29, 11:42 pm, Brian Nicholson
Post by 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
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
\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.
Mr. Arnold
2008-06-30 02:46:06 UTC
Permalink
Post by 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?
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
Brian Nicholson
2008-06-30 12:51:00 UTC
Permalink
Post by Mr. Arnold
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.
Brian Nicholson
2008-06-30 12:56:00 UTC
Permalink
Post by Brian Nicholson
Post by Mr. Arnold
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.
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.
Mr. Arnold
2008-06-30 13:21:45 UTC
Permalink
Post by Brian Nicholson
Post by Brian Nicholson
Post by Mr. Arnold
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.
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.
Mr. Arnold
2008-06-30 13:26:48 UTC
Permalink
Post by Brian Nicholson
Post by Mr. Arnold
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.
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.
Brian Nicholson
2008-06-30 14:06:13 UTC
Permalink
Post by Mr. Arnold
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.
Brian Nicholson
2008-06-30 16:21:03 UTC
Permalink
Post by Brian Nicholson
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?
unknown
2008-06-30 16:37:05 UTC
Permalink
You would have to send a client side script inside your web page. This
script would use the WScript.Network object to map the drive. You'll need
also to alter security settings - possibly done by your admin at an
entreprise level - to be able to do that (for example adding your intranet
site to the trusted sites).

Not sure why you need to do that but my personal preference would be to have
the admin team creating a mapping strategy and have the network drives
mapped automatically using the logon script (possibly depending about the
group in which the user is). Try for example
http://www.bluestream.org/Windows/LoginScripting.htm

As said earlier you may want to elaborate about your final goal...


--
Patrice
Post by Brian Nicholson
Post by Brian Nicholson
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?
rowe_newsgroups
2008-06-30 17:19:39 UTC
Permalink
On Jun 30, 12:21 pm, Brian Nicholson
Post by Brian Nicholson
Post by Brian Nicholson
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?
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/
Brian Nicholson
2008-06-30 17:35:01 UTC
Permalink
Post by rowe_newsgroups
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.
rowe_newsgroups
2008-06-30 18:01:13 UTC
Permalink
On Jun 30, 1:35 pm, Brian Nicholson
Post by Brian Nicholson
Post by rowe_newsgroups
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.
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/
Brian Nicholson
2008-06-30 18:32:01 UTC
Permalink
Post by rowe_newsgroups
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.
unknown
2008-06-30 16:23:40 UTC
Permalink
IMO your best would be to explain why you are trying to map a drive (i.e. I
mean the overall goal not the way you plan to this for now).

Do you try to map a drive server side ? I would avoid doing such a thing and
would use an UNC drive ? (do you REALLY need a mapped drive ???)

Do you try to map a drive client side ? It looks like it would be best
suitable to do that from the login script rather than using a web
application. If this is to be able to run scripts from a network share they
could be best placed on the NETLOGON share etc....

Knowing exactly what is the overall goal could raise better suggestions...

--
Patrice
Post by Brian Nicholson
Post by Mr. Arnold
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.
Brian Nicholson
2008-06-30 16:56:17 UTC
Permalink
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.
Post by unknown
IMO your best would be to explain why you are trying to map a drive (i.e. I
mean the overall goal not the way you plan to this for now).
Do you try to map a drive server side ? I would avoid doing such a thing and
would use an UNC drive ? (do you REALLY need a mapped drive ???)
Do you try to map a drive client side ? It looks like it would be best
suitable to do that from the login script rather than using a web
application. If this is to be able to run scripts from a network share they
could be best placed on the NETLOGON share etc....
Knowing exactly what is the overall goal could raise better suggestions...
--
Patrice
Post by Brian Nicholson
Post by Mr. Arnold
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.
Stephany Young
2008-06-30 17:07:42 UTC
Permalink
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.?
Post by 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.
Post by unknown
IMO your best would be to explain why you are trying to map a drive (i.e. I
mean the overall goal not the way you plan to this for now).
Do you try to map a drive server side ? I would avoid doing such a thing and
would use an UNC drive ? (do you REALLY need a mapped drive ???)
Do you try to map a drive client side ? It looks like it would be best
suitable to do that from the login script rather than using a web
application. If this is to be able to run scripts from a network share they
could be best placed on the NETLOGON share etc....
Knowing exactly what is the overall goal could raise better
suggestions...
--
Patrice
Post by Brian Nicholson
Post by Mr. Arnold
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.
Brian Nicholson
2008-06-30 17:27:07 UTC
Permalink
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?
Post by 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.?
unknown
2008-06-30 18:43:52 UTC
Permalink
Post by Brian Nicholson
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.
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...

--
Patrice
Brian Nicholson
2008-06-30 19:11:00 UTC
Permalink
Post by unknown
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)
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...
--
Patrice
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.
rowe_newsgroups
2008-06-30 19:51:36 UTC
Permalink
On Jun 30, 3:11 pm, Brian Nicholson
Post by Brian Nicholson
Post by unknown
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.htmlink I posted ealier)
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...
--
Patrice
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/
unknown
2008-07-01 11:40:56 UTC
Permalink
Post by Brian Nicholson
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.
Ah I didn't understood it was for admins but I don't really catch the
benefit you"ll get to edit a text file through a web page rather than using
notepad... It could be perhaps just a link (anchor whith a file://whatever
href) to the script file so that notepad is triggered. I'm not an admin but
AFAIK this is just a plain good old text file that is replicated all over
your domain as soon as editing is done so you have nothing sepcial to do to
make this file available to users...

Else you can do that from the admin console that should already group most
admin tasks...

--
Patrice

Loading...