What is the best way to map windows drives using Python?

后端 未结 7 1600
孤城傲影
孤城傲影 2020-11-28 05:08

What is the best way to map a network share to a windows drive using Python? This share also requires a username and password.

7条回答
  •  粉色の甜心
    2020-11-28 05:39

    If you want to map the current login user, i think subprocess solve your problem. But is you want to control different mappings for different users, from a single master account. You could do this from the register of windows

    The idea is to load the profile of a given user.

    import win32api
    import win32security
    import win32profile
    import win32netcon
    import win32net
    import win32netcon
    import win32con
    
    il = 'G'
    m = '\\\\192.168.1.16\\my_share_folder'
    usu = 'my_user'
    cla = 'passwd'
    
    #login the user
    hUser = win32security.LogonUser(
           usu,
           None,
           cla,
           win32security.LOGON32_LOGON_NETWORK,
           win32security.LOGON32_PROVIDER_DEFAULT 
        )
    
    #load the profile
    hReg = win32profile.LoadUserProfile (
                 hUser,  
                 {"UserName" : usu}
                )
    
    #alter the regedit entries of usu
    win32api.RegCreateKey(hReg, "Network")
    hkey = win32api.RegOpenKey(hReg, "Network\\", 0, win32con.KEY_ALL_ACCESS)
    win32api.RegCreateKey(hkey, il)
    hkey = win32api.RegOpenKey(hReg, "Network\\%s" % il, 0, win32con.KEY_ALL_ACCESS)
    win32api.RegSetValueEx(hkey, "ConnectionType", 0, win32con.REG_DWORD, 1)
    win32api.RegSetValueEx(hkey, "DeferFlags", 0, win32con.REG_DWORD, 4)
    win32api.RegSetValueEx(hkey, "ProviderName", 0, win32con.REG_SZ, "Red de Microsoft Windows")
    win32api.RegSetValueEx(hkey, "ProviderType", 0, win32con.REG_DWORD, 131072)
    win32api.RegSetValueEx(hkey, "RemotePath", 0, win32con.REG_SZ, m)
    win32api.RegSetValueEx(hkey, "UserName", 0, win32con.REG_DWORD, 0)
    

提交回复
热议问题