我正在尝试创建一个程序,该程序自动将网络快捷方式安装到我的桌面上并下载驱动程序(它是我工作的打印服务器),但为了在安装后访问该快捷方式,我需要在打印机网络的域下输入我的工作凭据。我尝试使用Python的keyring库,但没有成功,我也尝试使用win32wnet.WNETADDCONNECTION2(),我已经在几个论坛上看到过它,但对我来说也不成功。
下面是当前的代码
import os, winshell, keyring, win32wnet
from win32com.client import Dispatch
#Add Windows Credentials
#**************************
url = r'\\LINKTOTHENETWORK'
win32wnet.WNetAddConnection2(0, None, url, None, USERNAME, PASSWORD)
keyring.set_password(url, USERNAME, PASSWORD)
keyring.get_password(url, USERNAME)
#**************************
# This is where I am having troubles.
# Create the shortcut
desktop = winshell.desktop()
path = os.path.join(desktop, "MYLINK.lnk")
target = url
# Set path and save
shell = Dispatch('WScript.Shell')
shortcut = shell.CreateShortCut(path)
shortcut.Targetpath = target
shortcut.save()
# Open the shortcut
os.startfile(target)在我的完整程序中,我有一个使用Kivy的界面,它询问我的用户名和密码,然后我点击“安装”按钮,它会将域名添加到我的用户名(域\用户名)中。使用keyring它是正确地显示,只是在错误的区域,所以这不应该是一个问题,我只是找不到一个方法来添加Windows凭据而不是通用凭据。
我在Windows10计算机上使用python2.7。
如果有人知道我可以使用的库或其他方法,那就太好了。谢谢!
发布于 2016-08-11 09:15:17
我确信您可以通过创建一个.bat文件并在您的程序中执行它来实现这一点。
对于Ex.
def bat_create_with_creds(id, pwd):
"""create Batch file to init printer domain creds with variables"""
auth_print= open("auth_print.bat", "w")
auth_print.write("NET USE \\printserverip /USER:%"+id+"% %"+pwd+"%")
auth_print.close()我没有针对您的特定用例这样做,但它对init非常有效。例如使用windows mstsc的rdp会话。
https://stackoverflow.com/questions/38885666
复制相似问题