Я пытаюсь преобразовать следующий твик реестра питона с помощью WinREG:создания записи «@» с питоном, используя WinREG
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf]
@="@SYS:Does_Not_Exist"
Боль в «@», который я не могу реплицировать. Рассматривая примеры на C#, они используют, например. пустую строку '', чтобы ввести @. Если я вручную импортирую вышеуказанное и использую EnumValue() из winreg, эта запись также отображается как ''. Но я не могу сделать что-то подобное в python winreg, и пока не нашел обходного пути.
код, показывающий проблема:
from winreg import *
import os
import platform
import sys, time
import win32api as wa, win32con as wc, win32service as ws
def registrySetKey(hive, regpath, key, type, value):
try:
reg = OpenKey(hive, regpath, 0, KEY_ALL_ACCESS)
except EnvironmentError:
try:
reg = CreateKey(hive, regpath, 0, KEY_ALL_ACCESS)
SetValueEx(reg, key, None, type, value)
CloseKey(reg)
except:
print("*** Unable to register path %s, key %s!" % (regpath, key))
return
print("--- Python", version, "is now registered!")
return
try:
if (QueryValue(reg, key) == value):
return
except:
SetValueEx(reg, key, None, type, value)
CloseKey(reg)
reg = CreateKey(HKEY_LOCAL_MACHINE, r'Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf')
# This does not work
registrySetKey(HKEY_LOCAL_MACHINE,
r'Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf',
'', REG_SZ, '@SYS:Does_Not_Exist')
После ручного импорта названия записи (по умолчанию), используя который также не работает.
С уважением, Sven
Спасибо, что сделал трюк. – sven
Рад, что он решил вашу проблему. Не забудьте нажать на серый тик, чтобы принять ответ. –