无法将快捷方式保存到Windows XP中的启动文件夹中,并显示“访问被拒绝”com错误

时间:2011-10-28 01:35:58

标签: python py2exe

我编写了一个Python程序,它使用comtypes / ctypes创建快捷方式并将其保存在Startup文件夹中。在开发模式下,一切都很好,但是当使用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 个答案:

答案 0 :(得分:1)

解决了,问题是Commodo安全中心阻止访问上述文件夹。所以我只是将应用程序添加到信任列表中。至于R6034错误,我只需要确保在py2exe清单xml部分中嵌入以下内容:

  <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文件中提到的那些文件,该文件通常与那些d ..我没有安装Visual Studio。

答案 1 :(得分:0)

使用管理员权限运行py2exe程序。