अजगर का उपयोग करना:
import _winreg
try:
ext = _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, EXT_TYPE)
_winreg.SetValue(ext, "DefaultIcon", _winreg.REG_SZ, ICON_PATH)
_winreg.CloseKey(ext)
except WindowsError:
print "Error associating icon"
एक निष्पादन प्रकार (यानी PATHEXT) के रूप में विस्तार रजिस्टर:
EXT, EXT_TYPE = ".xyz", "XYZ file"
EXE_PATH = r"path\to\my\exe"
# %L is the long (full path) version of path
extCmd = '"%s" "%%L" %%*' % EXE_PATH
# Using assoc and ftype easier than editing registry!
assert os.system('assoc %s=%s' % (EXT, EXT_TYPE))==0
assert os.system('ftype %s=%s' % (EXT_TYPE, extCmd))==0
एक्सटेंशन प्रकार के साथ एक आइकन संबद्ध कर रहा है
try:
key = r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE)
# get current value
ext = _winreg.OpenKey(reg, key)
pathext = _winreg.QueryValueEx(ext, 'PATHEXT')[0]
if not EXT in pathext:
_winreg.CloseKey(ext)
# modify the current value
ext = _winreg.OpenKey(reg, key, 0, _winreg.KEY_ALL_ACCESS)
pathext += ';' + EXT
_winreg.SetValueEx(ext, 'PATHEXT', 0, _winreg.REG_SZ, pathext)
_winreg.CloseKey(ext)
_winreg.CloseKey(reg)
except WindowsError:
print "Error adding to PATHEXT"
साथ ही, PATHEXT को फिर से लॉग इन किए बिना पहचाने जाने के लिए आप पर्यावरण को अपडेट कर सकते हैं: (हालांकि धन्यवाद इस के लिए टी)
def refreshEnvironment():
HWND_BROADCAST = 0xFFFF
WM_SETTINGCHANGE = 0x001A
SMTO_ABORTIFHUNG = 0x0002
sParam = "Environment"
import win32gui
res1, res2 = win32gui.SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, sParam, SMTO_ABORTIFHUNG, 100)
मैं इस कोड है: 'प्रक्रिया EmulatorProcess; EmulatorProcess = Process.Start (@ "सी: \ दस्तावेज़ और सेटिंग्स \ serg \ डेस्कटॉप \ Emubox v0.01 \ SuperNintendo \ Roms \ सुपर मारियो आरपीजी (यू) .smc"); EmulatorProcess.WaitForInputIdle(); ' मैंने चीजों का परीक्षण करने के लिए बस एक हार्डकोडेड पथ का उपयोग किया। मैं अपनी जरूरतों के लिए कोड की आखिरी पंक्ति कैसे लागू कर सकता हूं? धन्यवाद! : डी –
[इस उत्तर] से (http://stackoverflow.com/a/13535039/1497596): * "रजिस्ट्रीकी 'वर्ग' आईडीस्पोजेबल 'लागू करता है और इसलिए आपको अपनी चाबियाँ' उपयोग 'कथन में लपेटनी चाहिए।" * या, वैकल्पिक रूप से, आपको 'रजिस्ट्रीकी' पर [बंद करें या निपटान करें] (http://stackoverflow.com/a/37059244/1497596) पर कॉल करना चाहिए जब आप इसके साथ काम करेंगे। इसका अर्थ यह है कि इस उदाहरण में दिखाए गए विधि श्रृंखला में 'CreateSubKey' सहित एक बुरा विचार है। – DavidRR