gpt4 book ai didi

macos - SMJobBless 返回错误 4098

转载 作者:行者123 更新时间:2023-12-01 01:18:09 24 4
gpt4 key购买 nike

我正在尝试使用 SMJobBless 安装一个安全的帮助工具。当它失败并且在调用 SMJobBless 之前,我正在调用 SMJobRemove,因为我需要删除该工具的旧版本并且这成功了。 SMJobBless 返回错误代码 4098。NSError 对象只是告诉我“操作无法完成。CodeSigning 子系统中出现错误。”

如果我重新运行我的代码,SMJobBless 函数就会起作用。我认为这是因为它以前被删除了,但为什么它第一次不起作用?然后我可以与该工具进行通信,并且一切正常。观察到一切正常运行,我相信我可以确定我满足文档中描述的 SMJobBless 的五个要求。

如果我增加我的工具版本并重试,SMJobRemove 将起作用,但是,SMJobBless 再次出现错误代码 4098。

如果重要的话,我使用的是 OS X 10.7.3。

最佳答案

难道你在打电话CFBundleCopyInfoDictionaryForURL关于代码签名的帮助工具?

如果是这样,看起来这个函数似乎破坏了代码签名的有效性。 (大概是因为 CFBundle 修改了内存中的 Info.plist 数据,但这只是我的猜测。)

解决方法是使用SecCodeCopySigningInformation阅读帮助工具的版本信息:

-(NSString *) bundleVersionForCodeSignedItemAtURL:(NSURL *)url {
OSStatus status;

// Sanity check -- nothing begets nothing
if (!url) {
return nil;
}

// Get the binary's static code
SecStaticCodeRef codeRef;
status = SecStaticCodeCreateWithPath((CFURLRef)url, kSecCSDefaultFlags, &codeRef);
if (status != noErr) {
NSLog(@"SecStatucCodeCreateWithPath() error for %@: %d", url, status);
return nil;
}

// Get the code signature info
CFDictionaryRef codeInfo;
status = SecCodeCopySigningInformation(codeRef, kSecCSDefaultFlags, &codeInfo);
if (status != noErr) {
NSLog(@"SecCodeCopySigningInformation() error for %@: %d", url, status);
CFRelease(codeRef);
return nil;
}

// The code signature info gives us the Info.plist that was signed, and
// from there we can retrieve the version
NSDictionary *bundleInfo = (NSDictionary *) CFDictionaryGetValue(codeInfo, kSecCodeInfoPList);
NSString *version = [bundleInfo objectForKey:@"CFBundleVersion"];

// We have ownership of the code signature info, so we must release it.
// Before we do that, we need to hold onto the version otherwise we go
// crashing and burning.
[[version retain] autorelease];
CFRelease(codeInfo);
CFRelease(codeRef);

return version;
}

给予应有的信任:有关 CFBundleCopyInfoDictionaryForURL 的重要信息来自 Ian MacLeod's SMJobKit .

关于macos - SMJobBless 返回错误 4098,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10817785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com