Не удается сохранить ярлык в папку автозагрузки в Windows XP с ком-ошибкой «доступ запрещен» - PullRequest
1 голос
/ 28 октября 2011

Я написал программу на Python, которая использует comtypes / ctypes для создания ярлыка и сохраняет его в папке «Автозагрузка». В режиме разработки все работает отлично, но когда программа собирается с использованием py2exe и запускается, возникает следующая ошибка:

(- 2147024891, «Доступ запрещен.», (Нет, Нет, Нет, 0, Нет))

os - это winxp sp3, код выглядит так:

shellObj = CreateObject(ShellLink)
shortcut = shellObj.QueryInterface(IShellLinkW)
shortcut.SetWorkingDirectory(os.path.dirname(sys.executable))
shortcut.SetPath(link_target)
shortcut.SetDescription(link_desc)
pf = shellObj.QueryInterface(IPersistFile)
Try:
    pf.Save(link_loc + link_file_name, True)
except Exception as ex:
    print ex
finally:
    pf.Release()
    shortcut.Release()

Если я сохраню ярлык для любой обычной папки, кроме автозагрузки, никаких проблем не возникнет.

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Решено, проблема была в том, что центр безопасности Commodo блокировал доступ к вышеупомянутой папке. Поэтому я просто добавил приложение в список доверия. Что касается ошибки R6034, я просто должен убедиться, что вставил следующее в раздел xml манифеста py2exe:

  <dependency>
    <dependentAssembly>
      <assemblyIdentity 
          type="win32" 
          name="Microsoft.VC90.CRT" 
          version="9.0.21022.8" 
          processorArchitecture="x86" 
          publicKeyToken="1fc8b3b9a1e18e3b">
      </assemblyIdentity>
    </dependentAssembly>
  </dependency>

и добавление msvcr90.dll и msvcp90.dll в ту же папку установки, что и exe (конфигурация SxS), чтобы убедиться, что версия и publicKeyToken точно соответствуют тем, которые упомянуты в файле Microsoft.VC90.CRT.manifest, который обычно поставляется в комплекте с эти библиотеки У меня не установлена ​​Visual Studio.

0 голосов
/ 28 октября 2011

Запустите вашу программу py2exe с правами администратора.

...