Оригинальный пост здесь: http://mail.python.org/pipermail/python-win32/2010-December/011011.htmlCom сервер сборки с помощью Python на 64-битной ОС Windows 7 машина
Я использую:
- ОС: 64 бит Windows 7 Professional
- Python: python-2.7.1.amd64
- Python win32 расширения: pywin32-214.win-amd64-py2.7
- Py2exe: py2exe-0.6.9.win64-py2. 7.amd64
Я пытаюсь создать наложение значков для Windows. Он работал отлично на 32-битной ОС Windows , но не работает на 64-битной Windows 7
Вот Python модули я создал для тестирования:
test_icon_overlay.py: (http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0002.obj) сервера COM, созданного в Python для наложения иконок, который добавляет галочки пометок (C: \ значки \ test.ico) на "C: \" иконки папки
setup_VI.py: (http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0003.obj) установочный файл, который создает test_icon_overlay.dll для распределение.
- icons.zip: (http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0001.zip) для тестирования вы должны извлечь icons.zip внутри C: \ на
C:\icons
папке появляется
пометка, когда я исполняю python test_icon_overlay.py
в командной строке Windows, и перезапускает explorer.exe
. Но ее не работает с файлом длл создана при setup_VI.py
я создал файл DLL с помощью python setup_VI.py py2exe
, а затем попытался зарегистрировать его с помощью regsvr32 test_icon_overlay.dll
. Ошибка регистрации с сообщением об ошибке Error 0x80040201 while registering shell extension
.
Затем я включил регистратор в Python27/Lib/site-packages/py2exe/boot_com_servers.py
и вот отслеживающий, который я получаю в comerror.txt
на regsvr32 test_icon_overlay.dll
PATH is ['C:\\root\\avalon\\module\\sync\\python\\src\\dist\\library.zip']
Traceback (most recent call last):
File "boot_com_servers.py", line 37, in <module>
pywintypes.error: (126, 'GetModuleFileName', 'The specified module could not
be found.')
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'DllRegisterServer' is not defined
Похоже, что может быть проблема с win32api.GetModuleFileName(sys.frozendllhandle)
или с длл сборки на 64-битных ОС Windows 7.
Кроме того, я увидел, что установка pywin32-214.win-amd64-py2.7
на 64-битной Windows 7 закончить с сообщением об ошибке: Snapshot
close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr
Есть ли что-нибудь, что я делаю неправильно? Любая помощь по этому поводу очень высока. оценен.
Когда вы говорите, он работает на 32-битной Windows, является то, что 32-разрядная версия Windows 7 или более старой версии как Windows XP? Если вы не пробовали 32-разрядную версию той же ОС, где 64-разрядная версия не работает, проблема может быть не в 64-битной вообще. Например, если он работает в XP, но не Win7, то это может быть связано с UAC. –
Я протестировал dll, сгенерированный в 32-разрядной Windows XP на 32-разрядной Windows XP, Vista и Win7, и наложение значков отлично работает на каждой ОС. Но 64-разрядная dll, созданная на 64-разрядной Windows XP/Win7, вообще не работала на 64-разрядной машине XP/Win7. Регистрация dll не удалась на 64-битной машине. –
Возможно, это глупый вопрос, но при выполнении regsvr32 окно cmd запускается с правами администратора, не так ли? – Mark