Démarrage automatique

Merci pour ce lien mais je ne comprend pas tout.
Si je comprend bien il faudrait que je fasse un "nouveau .plist" dans /Library/StartupItems (car /System/Library/StartupItems est réservé à Mac-OS Apple). Mais je n'ai pas ce dossier. Et vous ?
Pourtant j'ai bien des applis en démarrage automatique, alors elles se mettent où ?
 
Oui, c'est cela.

Attention, le Finder ne montre pas tous les répertoires... en particulier, les répertoires système.

De plus, le Finder traduit certains répertoires. C'est le cas pour le répertoire Library qui devient Bibliothèque (dans ton dossier maison).

En mettant le startup item dans le Library de ton dossier maison, l'applicaction ne sera lancée qu'à ton login, et pas au login système.
 
Une autre solution plus simple à mettre en œuvre mais uniquement pour un compte utilisateur (si je ne me trompe pas), c'est d'utiliser les loging items.

Pour cela, il suffit de rajouter son appli au fichier ~/Library/Preferences/loginwindow.plist

[EDIT] Ca semble fonctionner également pour le dossier /Library/Preferences !
 
Merci pour ce lien mais je ne comprend pas tout.

Ça doit être de famille, car au début, j'ai un peu pris peur :D

Mais bon, j'ai cherché, cherché, et j'ai trouvé ;) Voilà comment ce que j'ai fait :

Bloc de code:
- (IBAction)activeLoginWithSession:(id)sender
{
	NSLog(@"test");
	if([self isInAutoLaunchDictionary]){
		[self setIsInAutoLaunchDictionary: NO];
	}else{
		[self setIsInAutoLaunchDictionary: YES];
	}
}

et

Bloc de code:
// Méthode de test pour savoir si l'application est dans le loginwindow.plist
- (BOOL)isInAutoLaunchDictionary
{
	NSString *loginwindowPlist=[@"~/Library/Preferences/loginwindow.plist" stringByExpandingTildeInPath];
	NSDictionary *autoLaunchedApps=[NSDictionary dictionaryWithContentsOfFile:loginwindowPlist];
	NSArray *appsArray=[autoLaunchedApps objectForKey:@"AutoLaunchedApplicationDictionary"];
	NSEnumerator *anEnum=[appsArray objectEnumerator];
	id anObject;
	
	while ((anObject=[anEnum nextObject])) {
		if ([[[NSBundle mainBundle]bundlePath] isEqualToString:[anObject objectForKey:@"Path"]]) {
			return YES;
		}
	}
	
	return NO;
}

// Active/Désactive le démarrage automatique avec la session
- (void) setIsInAutoLaunchDictionary:(BOOL)value
{
	int i;
	
	NSMutableDictionary * loginDict;
	NSString *itemPfad = [[NSBundle mainBundle]bundlePath]; 
		
    NSMutableArray *loginItems = (NSMutableArray*) 
		CFPreferencesCopyValue((CFStringRef)@"AutoLaunchedApplicationDictionary" 
							   , (CFStringRef) @"loginwindow", kCFPreferencesCurrentUser, 
							   kCFPreferencesAnyHost); 
	
    loginItems = [[loginItems autorelease] mutableCopy]; 
	
    if(value==YES)
	{
		loginDict = [[NSMutableDictionary alloc] init]; 
	    [loginDict setObject: itemPfad forKey: @"Path"]; 
	    [loginDict setObject: [NSNumber numberWithBool:FALSE] forKey: @"Hide"];
		[loginItems addObject: loginDict]; 
		[loginDict release]; 
	}
	else
	{
		for(i = 0; i < [loginItems count]; i++) 
		{ 
			loginDict = [loginItems objectAtIndex: i]; 
			if (NSOrderedSame == [(NSString *)[loginDict objectForKey:@"Path"] compare: itemPfad]) 
			{ 
				[loginItems removeObjectAtIndex:i];
				break;
			} 
		} 
	}
	
	
	CFPreferencesSetValue((CFStringRef)@"AutoLaunchedApplicationDictionary", 
						  loginItems, (CFStringRef)@"loginwindow", kCFPreferencesCurrentUser, 
						  kCFPreferencesAnyHost); 
    CFPreferencesSynchronize((CFStringRef) @"loginwindow", 
							 kCFPreferencesCurrentUser, kCFPreferencesAnyHost); 
}