根据Cocoa Dev上的这个讨论,答案是否定的,不能通过编程注册自定义URL schemes。你必须在Info.plist中指定它们。(但是使用LSRegisterURL,如果你以编程方式更改Info.plist,你可以要求Launch Services重新加载你的应用程序的Info.plist。但是那很丑陋。)