如何无需切换登录账户 以其他用户身份运行UDL文件
UDL文件跨身份运行实现方案
问题背景
日常创建运行通用数据链接文件(UDL)验证本机与远程设备数据库的连通性时,使用自身网络账户操作功能完全正常,核心需求为无需在客户端设备登录目标用户账户,直接以其他有权限的身份(目标服务器本地服务账户、授权网络账户)运行UDL文件完成连接验证。
已尝试的无效操作:
- 按住右Shift同时右键点击文件唤出扩展菜单:UDL文件无「以其他用户身份运行」对应选项
- 直接调用
runas组件运行UDL:系统提示UDL不是Win32应用,执行失败 - 尝试在注册表路径
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer下添加ShowRunasDifferentuserinStart项:该路径下不存在Explorer子项,操作无法推进
可行实现方案
方案1:直接通过命令行指定宿主程序调用UDL(无需修改注册表,临时使用首选)
UDL本身不是可执行程序,是由系统OLE DB组件加载的配置文件,直接用runas调用会报错,只要先指定加载UDL的系统宿主程序即可正常使用,执行命令如下:
runas /user:目标域名\目标用户名 "rundll32.exe C:\PROGRA~1\COMMON~1\System\OleDB~1\oledb32.dll,OpenDSLFile 你的UDL文件完整路径"
命令说明:
- 路径中
C:\PROGRA~1\COMMON~1\System\OleDB~1\oledb32.dll是系统oledb32.dll的8.3短路径,可避免长路径含空格导致的执行错误,如果系统盘不是C盘、或系统目录自定义,替换为对应实际路径即可 - 执行命令后会弹出密码输入提示,输入目标账户的正确密码,即可直接在该用户身份上下文下打开UDL配置界面,后续的连接测试操作全部运行在目标身份权限下
- 也可以先执行
runas /user:目标域名\目标用户名 cmd打开目标身份下的命令提示符窗口,在该窗口中直接输入UDL文件的完整路径回车,同样可以跨身份加载UDL
方案2:补全注册表配置,给UDL添加右键「以其他用户身份运行」选项(长期使用首选)
你提到的注册表路径下不存在Explorer项是系统默认配置,手动新建对应项即可完成配置,操作步骤:
- 打开注册表编辑器,定位到
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows路径 - 在Windows项下新建名为
Explorer的子项 - 选中新建的Explorer项,在右侧窗口新建DWORD(32位)值,命名为
ShowRunasDifferentuserinStart,将数值数据设置为1,基数选择十六进制 - 重启Windows资源管理器或重启设备后,按住Shift右键点击UDL文件,即可在扩展菜单中看到「以其他用户身份运行」选项
注意:如果使用目标服务器本地服务账户测试,需要提前确认客户端到目标服务器的网络连通性正常,且该账户已被授予对应数据库的访问权限,否则UDL连接测试会返回权限类错误。
内容的提问来源于stack exchange,提问作者Jafar95
相关产品推荐
相关产品推荐

