我编写了一个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()
如果我将快捷方式保留在启动以外的任何普通文件夹中,则不会出现问题。
答案 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程序。