我正在尝试更改特定用户的启动程序。我有一些在 Windows Server 2003 上运行良好的代码:
Set objUser = GetObject("WinNT://localhost/sysadmin")
objUser.TerminalServicesInitialProgram = "C:\myapp.exe"
objUser.TerminalServicesWorkDirectory = "C:\"
objUser.SetInfo
但是,当我在 2000 服务器上运行它时,它在第一行失败,并且出现以下错误:
错误:未找到网络路径。
代码:80070035
来源:(空)
我找到了另一种实现相同目标的方法:
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set colUsers = GetObject("WinNT://" & strComputer)
colUsers.Filter = Array("user")
For Each objUser In colUsers
If (InStr(objUser.Name, "sysadmin")) Then
objUser.TerminalServicesInitialProgram = "C:\myapp.exe"
objUser.TerminalServicesWorkDirectory = "C:\"
End If
Next
同样,这在 2003 年有效,但在 2000 年,它If
在代码部分内部失败,我收到以下错误:
错误:对象不支持此属性或方法:'objUser.TerminalServicesInitialProgram'
代码:800A01B6
来源:Microsoft VBScript 运行时错误
在 2000 和 2003 中,您可以进入Administrative Tools->Computer Management->System Tools->Local Users and Groups->Users
,选择用户的属性,转到Environment
选项卡,然后在Starting program
. 这会让我认为如果可以在 2003 年完成,那么必须有一种方法可以在 2000 年访问该属性。添加后我在注册表中搜索了我的新应用程序名称,希望我能够更改在那里启动程序,但没有运气。
编辑:我为此添加了一个新的测试用户,并结合了 Nilpo 的答案,并通过了类似于以下行的内容创建用户对象的部分:
Set objUser = GetObject("LDAP://CN=joe,CN=Users,DC=lab,DC=server,DC=net")
我得到了与上面提到的相同的错误:Object doesn't support this property or method: 'objUser.TerminalServicesInitialProgram'
这意味着尝试执行此操作的四种替代方法都失败了。有没有人对此有任何其他想法?