Programmatically starting a workflow requires the following code:
                
                
                  Guid wfBaseId = new Guid("{6BE0ED92-BB12-4F8F-9687-E12DC927E4AD}");
                  SPSite site = ...;
                  SPWeb web = site.OpenWeb();
                  SPList list = web.Lists["listname"];
                  SPListItem item = list.Items[0];
                  SPWorkflowAssociation associationTemplate= list.WorkflowAssociations.GetAssociationByBaseID(wfBaseId);
                  site.WorkflowManager.StartWorkflow(item, associationTemplate, "");
                
                
                
                The workflow base ID can be found in the workflow.xml in the corresponding feature folder.
                If you have a SharePoint Designer 2007 workflow it can be obtained by opening the workflow.xoml.wfconfig.xml file in a text editor:
                
                If you don't have initiation data don't pass null or an empty string to the StartWorkflow method or the workflow will fail ! Instead use a single empty XML node (see sample code above).