public static List <AutostartProgramInfo> GetAutostartProgramsFromFolder(AutostartLocation autostartLocation, bool isEnabled) { var result = new List <AutostartProgramInfo>(); try { var directory = GetDirectoryFromAutostartLocation(autostartLocation, isEnabled); if (directory.Exists) { foreach (var fileInfo in directory.GetFiles()) { if (fileInfo.Name == "desktop.ini") { continue; } FileInfo file; if (fileInfo.Extension == ".lnk") { file = new FileInfo(GetShortcutTarget(fileInfo.FullName)); } else { file = fileInfo; } var entry = new AutostartProgramInfo { Name = fileInfo.Name, //This should be fileinfo CommandLine = file.FullName, IsEnabled = isEnabled, AutostartLocation = autostartLocation }; result.Add(AutostartManager.CompleteAutostartProgramInfo(entry)); } } } catch (Exception) { // ignored } return(result); }
public static List <AutostartProgramInfo> GetAutostartProgramsFromRegistryKey( AutostartLocation autostartLocation, bool isEnabled) { var result = new List <AutostartProgramInfo>(); try { using (var registryKey = GetRegistryKeyFromAutostartLocation(autostartLocation, isEnabled, false)) { if (registryKey != null) { foreach (var valueName in registryKey.GetValueNames()) { var value = registryKey.GetValue(valueName) as string; if (value == null) { continue; } var entry = new AutostartProgramInfo { Name = valueName, CommandLine = value, IsEnabled = isEnabled, AutostartLocation = autostartLocation }; result.Add(AutostartManager.CompleteAutostartProgramInfo(entry)); } } } } catch (Exception) { // ignored } return(result); }
public override void ProcessCommand(byte[] parameter, IConnectionInfo connectionInfo) { byte[] data; switch ((StartupManagerCommunication)parameter[0]) { case StartupManagerCommunication.GetAutostartEntries: ResponseBytes((byte)StartupManagerCommunication.ResponseAutostartEntries, new Serializer(typeof(List <AutostartProgramInfo>)).Serialize( AutostartManager.GetAllAutostartPrograms()), connectionInfo); break; case StartupManagerCommunication.EnableAutostartEntry: try { AutostartManager.ChangeAutostartEntry((AutostartLocation)parameter[1], Encoding.UTF8.GetString(parameter, 2, parameter.Length - 2), true); } catch (Exception ex) { if (!(ex is SecurityException) && !(ex is UnauthorizedAccessException)) { throw; } data = new byte[parameter.Length]; data[0] = (byte)StartupManagerCommunication.ResponseAutostartChangingFailed; Array.Copy(parameter, 1, data, 1, parameter.Length - 1); connectionInfo.CommandResponse(this, data); return; } data = new byte[parameter.Length]; data[0] = (byte)StartupManagerCommunication.ResponseAutostartEntryEnabled; Array.Copy(parameter, 1, data, 1, parameter.Length - 1); connectionInfo.CommandResponse(this, data); break; case StartupManagerCommunication.DisableAutostartEntry: try { AutostartManager.ChangeAutostartEntry((AutostartLocation)parameter[1], Encoding.UTF8.GetString(parameter, 2, parameter.Length - 2), false); } catch (Exception ex) { if (!(ex is SecurityException) && !(ex is UnauthorizedAccessException)) { throw; } data = new byte[parameter.Length]; data[0] = (byte)StartupManagerCommunication.ResponseAutostartChangingFailed; Array.Copy(parameter, 1, data, 1, parameter.Length - 1); connectionInfo.CommandResponse(this, data); return; } data = new byte[parameter.Length]; data[0] = (byte)StartupManagerCommunication.ResponseAutostartEntryDisabled; Array.Copy(parameter, 1, data, 1, parameter.Length - 1); connectionInfo.CommandResponse(this, data); break; case StartupManagerCommunication.RemoveAutostartEntry: AutostartManager.RemoveAutostartEntry((AutostartLocation)parameter[2], Encoding.UTF8.GetString(parameter, 3, parameter.Length - 3), parameter[1] == 1); data = new byte[parameter.Length]; data[0] = (byte)StartupManagerCommunication.ResponseAutostartEntryRemoved; Array.Copy(parameter, 1, data, 1, parameter.Length - 1); connectionInfo.CommandResponse(this, data); break; default: throw new ArgumentOutOfRangeException(); } }