对Python来说还是个新手,我正在尝试编写一个脚本,允许我在远程机器上更改特定的注册表项,但我遇到了一些问题。基本上我运行的代码没有错误,但是键值也没有设置。我在Windows命令提示符下以管理员身份运行它,使用的帐户在目标计算机上具有管理员权限。以下是相关代码:
registry = winreg.ConnectRegistry(fullSysName, winreg.HKEY_LOCAL_MACHINE)
wholeKey = winreg.OpenKey(registry, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", 0, winreg.KEY_ALL_ACCESS)
print('Setting AutoAdminLogon\n')
winreg.SetValue(wholeKey, 'AutoAdminLogon', winreg.REG_SZ, '1')
winreg.CloseKey(wholeKey)
winreg.CloseKey(registry)
fullSysName是一个变量,它包含从脚本前面派生的目标计算机名。脚本运行没有错误,我有管理权限,所以我不知道为什么它不工作。最后得到了一些Powershell来做,但我很困扰,我不能让这个工作,至少想明白为什么。我已经确认,即使手动将“fullSysName”替换为计算机名,它也没有效果。感谢您提供的任何提示!你知道吗
基本上你需要做两件事: 第一种是,当您打开一个键并授予对程序的访问权限时,您需要更加具体,这意味着您需要指定您的计算机是32位还是64位。例如,我的机器是64位的,所以我需要将我的密钥打开更改为:
对于32位机器,您需要添加
winreg.KEY_WOW64_32KEY
第二件事是,
SetValue
并不总是有效的,因此需要使用SetValueEx
,它接受5个参数(添加的参数必须是0)。所以在你的情况下:您可以在documentation中阅读更多关于这方面的内容。你知道吗
相关问题 更多 >
编程相关推荐