[python-win32] win32net.NetUseAdd buglet (or doc buglet)

Scott Prive scottprive at earthlink.net
Fri Apr 18 18:55:20 EDT 2003


Hi Jens,

Thank you for your reply and your suggestion.

The reason I picked NetUseAdd() was it was what showed up in my Google
search for "python drive map" -- I did not know about
win32wnet.WNetAddConnection2... I'm used to wrapping shell commands in
functions... naturally I want to get away from such silliness :-)

Re: NetUseAdd(), what docs were you looking at? I could see on the
ActiveState documentation online, that gave a brief description of the API
NetUseAdd()...  then referred to the MSDN website for more info, which did
show a username/password. You can see in my output, it actually *does* work
(or seems to even if I interact with the mount manually).

I just noticed the win32wnet wrappers have MUCH better documentation... is
win32net depreciated or otherwise less desired than win32wnet (should I read
into it that way)?

I'll work with your suggestion, thanks again. Next time I have a problem
like this I won't assume the first API I found is the only one that can do
the task either. :-)

-Scott





----- Original Message -----
From: "Jens B. Jorgensen" <jens.jorgensen at tallan.com>
To: "Scott Prive" <scottprive at earthlink.net>
Cc: <python-win32 at python.org>
Sent: Friday, April 18, 2003 4:56 PM
Subject: Re: [python-win32] win32net.NetUseAdd buglet (or doc buglet)


> Scott,
>
> According to the docs I'm looking at NetUseAdd doesn't accept username
> at all. However, why not use win32wnet.WNetAddConnection2 instead? I
> tried this out on my box and it worked great. Here's what I did:
>
> win32wnet.WNetAddConnection2(win32netcon.RESOURCETYPE_DISK, 'y:',
> '\\\\servername\\sharename', None, 'domain\\username', 'password', 0)
>
> It worked great.
>
> Scott Prive wrote:
>
> >Hi all,
> >
> >I replied to Mark/All, but I think anyone could jump in with an answer.
> >
> >The example code is ready to run and I included output from the debugger.
> >Please someone try it out and tell me if my results were reproducible.
> >
> >Basically NetUseAdd() -- on my system at least -- seems to require the
key
> >['passwd'] and fails with ['password']. Mark says the reverse condition
> >should be true, which leads me to wonder... what am I doing wrong? Should
I
> >ditch ActiveState and use python.org + win32all? I'll do that if
necessary
> >and is the source of my problem.
> >
> >thanks a bunch,
> >Scott
> >
> >
> >
> >
> >----- Original Message -----
> >From: "Scott Prive" <scottprive at earthlink.net>
> >To: "Mark Hammond" <mhammond at skippinet.com.au>; <python-win32 at python.org>
> >Sent: Wednesday, April 16, 2003 11:36 PM
> >Subject: Re: [python-win32] win32net.NetUseAdd buglet (or doc buglet)
> >
> >
> >
> >
> >>----- Original Message -----
> >>From: "Mark Hammond" <mhammond at skippinet.com.au>
> >>To: "'Scott Prive'" <scottprive at earthlink.net>
> >>Sent: Wednesday, April 16, 2003 7:10 PM
> >>Subject: RE: [python-win32] win32net.NetUseAdd buglet (or doc buglet)
> >>
> >>
> >>
> >>
> >>>>that share info is passed to the function in the form of a dictionary.
> >>>>There's no example usage [sorry to complain, wish there
> >>>>were...] but it does
> >>>>point me to MSDN for more info.
> >>>>
> >>>>
> >>>I think you will find examples in the Python Programming on Win32 book.
> >>>
> >>>
> >>Actually I -have- your book :-)
> >>Until I finish Lutz' Programming Python, your Win32 is serving as a
> >>reference (it's next tho!).
> >>
> >>Searching the index, I did not see win32net.NetUseAdd (other win32net
> >>relatives are listed).
> >>... It could be an index omission, in which case I'll see it eventually.
> >>
> >>
> >>
> >>>>The problem?
> >>>>
> >>>>The MSDN documentation has example usage (share path, user,
> >>>>password etc.).
> >>>>But in their example they call password, "password".... the
> >>>>Pythin win32
> >>>>wrapper doesn't understand ['password'] (and does not raise
> >>>>an exception on
> >>>>its use), but it DOES understand ['passwd'].
> >>>>
> >>>>So either MSDN is wrong or the wrapper's got a buglet. :-)
> >>>>
> >>>>
> >>>None of these wrappers raise an exception on a bad attribute name -
they
> >>>should.  But in this case, the attribute is certainly named "password".
> >>>
> >>>
> >I
> >
> >
> >>>expect that simply the underlying Win32 call is failing for you.
> >>>
> >>>Mark.
> >>>
> >>>
> >>I'm certain it appears only to work with 'passwd', but if something's
> >>
> >>
> >going
> >
> >
> >>on under the hood it's quite interesting.  Below is an interactive
> >>
> >>
> >session,
> >
> >
> >>followed by the actual code.
> >>
> >>You can see the difference between the two functions is the password
> >>
> >>
> >entry.
> >
> >
> >>I've tried this with other accounts. The same credentials were tested
> >>
> >>
> >under
> >
> >
> >>CMD.EXE using 'net use'. The accounts exist on a win2K Server PDC, which
> >>
> >>
> >is
> >
> >
> >>the same server I'm mounting the share from. Each time I tested, I
started
> >>from a clean slate and verified nothing (at all) is listed under plain
> >>
> >>
> >'net
> >
> >
> >>use'
> >>
> >>When I get a mount from my function (under 'passwd'), I validate it by
> >>echoing text to a file on Z:\test.txt.
> >>If the 'password' function ran, which never provided a mount, this step
> >>yields a "system cannot find the path specified."
> >>
> >>Any thoughts? Thanks.
> >>-Scott
> >>
> >>---------- interactive ------------
> >>E:\scott\Komodo\ntlm_cifs>dir z:
> >>The system cannot find the path specified.
> >>
> >>E:\scott\Komodo\ntlm_cifs>python
> >>ActivePython 2.2.2 Build 224 (ActiveState Corp.) based on
> >>Python 2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)] on win32
> >>Type "help", "copyright", "credits" or "license" for more information.
> >>
> >>
> >>>>>from testmap import *
> >>>>>mountShare
> >>>>>
> >>>>>
> >><function mountShare at 0x008B63E8>
> >>
> >>
> >>>>>mountShare()
> >>>>>
> >>>>>
> >>This drive letter was in use, so I'll unmount it
> >>Good. Verified drive letter is not already mounted.
> >>Traceback (most recent call last):
> >>  File "<stdin>", line 1, in ?
> >>  File "testmap.py", line 20, in mountShare
> >>    win32net.NetUseAdd(None,1,data)
> >>pywintypes.api_error: (1326, 'NetUseAdd', 'Logon failure: unknown user
> >>
> >>
> >name
> >
> >
> >>or b
> >>ad password.')
> >>
> >>
> >>>>>mountShare2()
> >>>>>
> >>>>>
> >>This drive letter was in use, so I'll unmount it
> >>Good. Verified drive letter is not already mounted.
> >>
> >>
> >>----------------code---------------
> >>#!/usr/bin/python
> >>
> >>import string, sys, win32file, win32net
> >>
> >>def mountShare():
> >>    """A CIFS mount interface, wraps win32 API call NetUseAdd"""
> >>    #see ASPN docs win32wnet.NetUseAdd and win32net.NetUseAdd
> >>    try:
> >>        print "This drive letter was in use, so I'll unmount it"
> >>        unmountShare()
> >>    except:
> >>        print 'Good. Verified drive letter is not already mounted. '
> >>    data = {
> >>        'remote' : r'\\rogue.scottprive.com\account1',
> >>        'local' : 'Z:',
> >>        'password' : 'foo',
> >>        'user' : 'foo',
> >>        'asg_type' : 0,
> >>        }
> >>    win32net.NetUseAdd(None,1,data)
> >>
> >>def mountShare2():
> >>    """A CIFS mount interface, wraps win32 API call NetUseAdd"""
> >>    #see ASPN docs win32wnet.NetUseAdd and win32net.NetUseAdd
> >>    try:
> >>        print "This drive letter was in use, so I'll unmount it"
> >>        unmountShare()
> >>    except:
> >>        print 'Good. Verified drive letter is not already mounted. '
> >>    data = {
> >>        'remote' : r'\\rogue.scottprive.com\account1',
> >>        'local' : 'Z:',
> >>        'passwd' : 'foo',
> >>        'user' : 'foo',
> >>        'asg_type' : 0,
> >>        }
> >>    win32net.NetUseAdd(None,1,data)
> >>
> >>def unmountShare():
> >>    win32net.NetUseDel(None,'Z:',0)
> >>
> >>
> >>def main():
> >>    mountShare()
> >>    mountShare2()
> >>
> >>if __name__ == '__main__': main()
> >>
> >>
> >>
> >>
> >>
> >>
> >>_______________________________________________
> >>Python-win32 mailing list
> >>Python-win32 at python.org
> >>http://mail.python.org/mailman/listinfo/python-win32
> >>
> >>
> >
> >
> >_______________________________________________
> >Python-win32 mailing list
> >Python-win32 at python.org
> >http://mail.python.org/mailman/listinfo/python-win32
> >
> >
>
> --
> Jens B. Jorgensen
> jens.jorgensen at tallan.com
>
> "With a focused commitment to our clients and our people, we deliver value
through customized technology solutions"
>
>




More information about the Python-win32 mailing list