Commit 120e6a71 by 陶腾飞

v0.9:新增微盘备份与同步功能,adct能够强制备份用户文件,用注册表来存储信息

parent 1345e69e
*.bat
*.ps1
/*test
/*.exe
\ No newline at end of file
# AD-Control-Goalng
# AD-Control-Golang
# 程序简介
本程序是从[AD-Control](http://git.zhiweidata.top/taotengfei/AD-Control)升级而来,并融合了在AD上经常使用的工具.
......@@ -12,6 +12,7 @@
6. **DCU,Domain Computer User**是DC上的Users.exe用户进程
# 程序作用简要
## DCU - Domain Computer User
UI:在DC上以**用户权限****任务栏托盘**的方式运行
启动说明:由组策略的文件替换功能,从文件共享中复制到C:\Windows\System32下,并运行
......@@ -21,13 +22,16 @@ UI:在DC上以**用户权限**且**任务栏托盘**的方式运行
2. 软件安装
3. 微盘同步
4. 文件共享
## DCD - Domain Computer Daemon
运行方式:由组策略在计算机启动时运行命令`runad.bat daemon`来进行循环启动DCD。(**管理员权限、无窗口**
主要功能运行由DCU和ADU提交的程序和与接受处理发送消息(通常处理需要管理员权限的消息)
## ADD - ADServer Daemon
运行方式:前后台任意
主要作用:根据ADU的参数设定响应来自DC端的请求
其他:使用注册表(HKLM\Software\ADControl)作为数据库的存储
## ADU - ADServer User(未完成)
运行方式: 命令行参数形式
主要作用:设定请求返回的结果
......
No preview for this file type
......@@ -3,7 +3,6 @@ import (
"AD-Control/public"
"time"
"flag"
_ "strings"
)
......@@ -28,8 +27,44 @@ func main(){
return
}
func flag_report(s *string,who * string){
public.SendServer(public.GJreport(*s,*who))
func flag_report(s *string,user * string){
switch *s {
case public.Msg_Report_UserStart:
public.Reg_Write_DC(
public.Reg_Name_loginUserName,
*user)
public.Reg_Write_DC(
public.Reg_Name_loginTime,
public.GetStrTime())
case public.Msg_Report_StartBak:
lastLoginUser := public.Reg_Query_DC(public.Reg_Name_loginUserName)
lastBackupUser := public.Reg_Query_DC(public.Reg_Name_BackupUserName)
lasttime := public.Reg_Query_DC(public.Reg_Name_BackupOverTime)
var name string
if lastBackupUser == ""{
if lastLoginUser == ""{
return
} else {
name = lastLoginUser
}
}else{
name = lastBackupUser
}
var dt public.DoTime
dt.Str = lasttime
// 如果不存在上次登录 或者 超过5小时备份时间
if dt.BeforeHour(5){
public.SendServer(public.GJreport(public.Msg_Report_StartBak,name))
}
case public.Msg_Report_OverBak:
public.Reg_Write_DC(public.Reg_Name_loginUserName,*user)
public.Reg_Write_DC(public.Reg_Name_BackupOverTime,public.GetStrTime())
}
public.SendServer(public.GJreport(*s,*user))
}
func flag_bakcup(s *string){
;
......
No preview for this file type
......@@ -7,23 +7,20 @@ import (
"bufio"
)
//---------------------
//
// Daemon
//
//---------------------
// 守护进程 初始化
func daemonInit(){
if public.NotExist(public.DocuBase){
public.PrintLog("init: create Documents Base -> ",public.DocuBase)
public.Mkdir(public.DocuBase)
// 1 创建文件夹
for _,i := range public.User_Dir_Be{
if public.NotExist(i){
public.Mkdir(i)
}
}
public.PrintLog(public.Msg_Report_DaemonStart)
if adserver() {
// 1 初始化 微盘复制状态
// 2 初始化 微盘复制状态
public.CopyStatusWeDrive = make(map[string]bool)
public.CopyStatusWeDrive[public.Zhiwei_Dept_HB] = true
public.CopyStatusWeDrive[public.Zhiwei_Dept_LP] = true
......@@ -35,11 +32,12 @@ func daemonInit(){
public.CopyStatusWeDrive[public.Zhiwei_Dept_TECH] = true
} else {
// 1 发送 Daemon Start
// 2 发送 Daemon Start
public.SendServerReport(public.Msg_Report_DaemonStart)
}
}
// 守护进程 运行
func deamonRun(){
daemonHost := public.User_computername
listener, err := net.Listen("tcp", public.DaemonListen)
......@@ -83,7 +81,6 @@ func deamonRun(){
}
func main() {
daemonInit()
deamonRun()
......
package public
// app env ////////////////////////////////////////////////////////////////
//const Debug bool
// AD-Control env
const DaemonPort string = "16823"
const DaemonListen string = ":" + DaemonPort
const ADServerDaemon string = Env_MainADHostname + DaemonListen
var LocalDaemon string = User_computername + DaemonListen
const DocuBase string = `C:\Users\Public\Documents\AD-Control\`
const RandMax int = 60
const Version string = "0.8"
const Version string = "0.9"
const Application string = "AD-Control-Log"
......@@ -27,13 +27,17 @@ var User_appdata string = GetEnv("appdata")
var User_sid string = Reg_query_key_one(HKCU,`Software\Microsoft\Windows\CurrentVersion\FileAssociations`,"UserSid")
var User_sessionID string = Reg_query_item_one(HKU,User_sid+`\Volatile Environment`)
var User_Dir_WeDrive string = User_appdata + `\Tencent\WXWork\Data`
var User_Dir_WeDrive = [2] string {User_appdata + `\Tencent\WXWork\Data`,User_profile + `\Documents\WXWork`}
const User_Dir_DCSave string = `D:\DomainUserBackup`
var User_Die_WeDriveBackup string = User_Dir_DCSave + `\` + User_name + `\WeDriveBackup`
var User_Dir_Be =[2]string {DocuBase,User_Die_WeDriveBackup}
// win-computer env /////////////////////////////////////////////////////
const Env_FreeFileSyncExe string = `C:\Progra~2\zhiwei\FreeFileSync_10.22\FreeFileSync.exe`
// AD env ///////////////////////////////////////////////////////////
const Env_MainADHostname string = "ADSERVER"
......@@ -43,17 +47,27 @@ const Env_ADMain string = Env_SMBAdserver + "ADMAIN"
var Env_ADMainDept string = Env_ADMain + `\` + User_dept_str
var Env_ADMainDeptShare string = Env_ADMain + `\` + User_dept_str + `\` + "部门共享"
const Env_ADSoftlike string = Env_ADSoft + `\` + "softlike"
const Env_ADApplication string = Env_ADSoft + `\` + "application" + `\`
const Env_ADSoftApplication string = Env_ADSoft + `\` + "application" + `\`
const Env_ADSoftTool string = Env_ADSoft + `\` + "tools" + `\`
const Env_ADSoftTool_RebootUser string = Env_ADSoftTool + "upusers.bat"
const Env_ADSoftOthTool string = Env_ADSoft + `\` + `othtools\`
const Env_ADsoftware_local string = `F:\software\softlike\`
// application ////////////////////////////////////////////////////////////////
const App_adct string = Env_ADSoftApplication + "adct.exe"
const App_MultiSplit string = Env_ADSoftOthTool + "win_MultiSplit.exe"
//const App_MulitOpenPages string = Env_ADOtherTool + "MultiOpenPages.bat"
// AD User env ////////////////////////////////////////////////////////////////
const AD_User_main_admin string = "zhiweiadserver"
const AD_User_tengfei string = "tengfei"
const AD_User_taotengfei string = "taotengfei"
const AD_User_huyibo string = "huyibo"
const AD_User_xuwenqiang string = "xuwenqiang"
const Zhiwei_Dept_HB string = "HB"
......@@ -83,21 +97,27 @@ const (
HKLM
HKU
)
const Reg_Root_achome int = HKLM
const Reg_Path_achome string = `SOFTWARE\ADControl`
const Reg_Path_achome_dc string = Reg_Path_achome + `\DomainComputer\` // use for adserver,not for dc
const Reg_Name_achome_dc_lastlogin string = "LastLogin"
const Reg_Name_achome_dc_lastclose string = "CloseWindows"
const Reg_Name_achome_dc_WeDriveDir string = "WeDriveDir"
const Reg_Root_ac int = HKLM
const Reg_Root_dc int = HKCU
const Reg_Path_home string = `SOFTWARE\ADControl`
const Reg_Path_home_dc string = Reg_Path_home + `\DomainComputer\` // use for adserver,not for dc
const Reg_Name_TurnOnTime string = "TurnOnTime"
const Reg_Name_TurnOffTime string = "TurnOffTime"
const Reg_Name_loginUserName string = "loginUser"
const Reg_Name_loginTime string = "loginTime"
const Reg_Name_BackupUserName string = "BackupUserName"
const Reg_Name_BackupOverTime string = "BackupOverTime"
const Reg_Name_WeDriveDir string = "WeDriveDir"
// reg value /////////////////////////////////////////////////////////////////
var Reg_Value_WeDriveDir string = Reg_query_key_one(HKCU,Reg_Path_achome,Reg_Name_achome_dc_WeDriveDir)
var Reg_Value_WeDriveDir string = Reg_query_key_one(HKCU,Reg_Path_home,Reg_Name_WeDriveDir)
// other env ///////////////////////////////////////////////////////////////
const Link_WxworkBot string = `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=59107f72-5b72-4a20-a33c-fdb1cd46f2c6`
const Link_MultiSplit string = Env_ADApplication + "win_MultiSplit.exe"
const Cmdk string = "cmd /k "
const Startk string = "cmd /k start "
var Dir_Windows string = GetEnv("windir") + `\`
......
......@@ -33,10 +33,8 @@ func DealMsgEnter(ip string,msgtype string,unmsg []byte) []byte {
ret = pmsg.Msg_Deal()
// 错误 消息
case Msg_Error:
SendWX(string(unmsg))
return nil
// var pmsg MJerror
// ParseJsonBody(unmsg,&pmsg)
// ret = pmsg.Msg_Deal()
}
return JsonToByte(&ret)
......@@ -56,28 +54,51 @@ func (rep *MJreport)Msg_Deal() interface{} {
case Msg_Report_Offwork:
return GJbackup()
case Msg_Report_StartBak:
return GJbackup()
case Msg_Report_OverBak:
SysMsgBox(rep.Computername,"备份结束")
Reg_Write_key_one(
Reg_Root_ac,
Reg_Path_home_dc + rep.Computername,
Reg_Name_BackupUserName,
UnixTimeParse(&rep.Timestamp))
Reg_Write_key_one(
Reg_Root_ac,
Reg_Path_home_dc + rep.Computername,
Reg_Name_BackupOverTime,
UnixTimeParse(&rep.Timestamp))
return GJexecAck(Msg_Exec_CloseWindows)
case Msg_Report_CloseWindows:
Reg_Write_key_one(
Reg_Root_achome,
Reg_Path_achome_dc + rep.Computername,
Reg_Name_achome_dc_lastclose,
Reg_Root_ac,
Reg_Path_home_dc + rep.Computername,
Reg_Name_TurnOnTime,
UnixTimeParse(&rep.Timestamp))
case Msg_Report_DaemonStart:
Reg_Write_key_one(
Reg_Root_achome,
Reg_Path_achome_dc + rep.Computername,
Reg_Name_achome_dc_lastlogin,
Reg_Root_ac,
Reg_Path_home_dc + rep.Computername,
Reg_Name_TurnOffTime,
UnixTimeParse(&rep.Timestamp))
case Msg_Report_UserStart:
if rep.Version != Version{
return GJexecAck(Msg_Exec_UpdateVersion)
}
Reg_Write_key_one(
Reg_Root_ac,
Reg_Path_home_dc + rep.Computername,
Reg_Name_loginUserName,
rep.Username)
Reg_Write_key_one(
Reg_Root_ac,
Reg_Path_home_dc + rep.Computername,
Reg_Name_loginTime,
UnixTimeParse(&rep.Timestamp))
case Msg_Report_OverCopyToWeDrive:
go func() {
Delay(600)
......@@ -164,8 +185,11 @@ func (exec *MJexec)Msg_Deal()interface{}{
}
switch exec.Instruction{
case Msg_Exec_GUIExec:
PsExec_sdi(exec.Computername,exec.Command,exec.SessionID)
case Msg_Exec_CopyWeDrive:
reg_Value_WeDriveDir := Reg_query_key_one(HKCU,Reg_Path_achome,Reg_Name_achome_dc_WeDriveDir)
reg_Value_WeDriveDir := Reg_query_key_one(HKCU,Reg_Path_home,Reg_Name_WeDriveDir)
cmd := `cmd /c xcopy ` + Env_ADMainDeptShare + " /D " + reg_Value_WeDriveDir + `\` + Zhiwei_WxDrive_Folder + " /S /T /E /C /y"
Execcmd_wait(cmd)
......@@ -181,6 +205,7 @@ func (exec *MJexec)Msg_Deal()interface{}{
func (bak * MJbackup)Msg_Deal() interface{}{
switch bak.Status{
case Msg_Backup_Status_Start:
if !PrimaryUser(bak.Username) { return nil }
......@@ -243,7 +268,7 @@ func (bak * MJbackup)Msg_Deal() interface{}{
bak.Explain = "Backup Ready"
return bak
case Msg_Backup_Status_Run:
SysMsgBox(bak.Computername,bak.Username + " 开始备份")
//SysMsgBox(bak.Computername,bak.Username + " 开始备份")
PsExec_sd(bak.Computername,Env_FreeFileSyncExe + " "+ bak.BatchFileName)
}
return nil
......@@ -264,6 +289,7 @@ func (reg * MJreg)Msg_Deal() interface{}{
// 关于 error 错误 的 消息处理
func (err * MJerror)Msg_Deal() interface{}{
return nil
}
\ No newline at end of file
// func (err * MJerror)Msg_Deal() interface{}{
// return nil
// }
\ No newline at end of file
......@@ -19,14 +19,15 @@ const Msg_Error string = "error"
// msg report type ///////////////////////////////////////////////////////////
const Msg_Report_DaemonStart string = "Daemon Start"
const Msg_Report_UserStart string = "User Start"
const Msg_Report_DaemonStart string = "DaemonStart"
const Msg_Report_UserStart string = "UserStart"
const Msg_Report_Offwork string = "offwork"
const Msg_Report_OverBak string = "overbak"
const Msg_Report_CloseWindows string = "closewindows"
const Msg_Report_OverCopyToWeDrive string = "overcopytowedrive"
const Msg_Report_OverCopyToDeptShare string = "OverCopyToDeptShare"
const Msg_Report_StartBak string = "startbak"
const Msg_Report_OverBak string = "overbak"
// msg backup type //////////////////////////////////////////////////////////////
......@@ -36,7 +37,6 @@ const Msg_Backup_Status_Continue string = "Continue"
const Msg_Backup_Status_Run string = "run"
const Msg_Backup_Status_Error string = msgerror
// msg exec type ////////////////////////////////////////////////////////////////
const (
......@@ -60,6 +60,7 @@ const Msg_Exec_UpdateVersion_cmd string = "Env_ADSoftTool_Update"
const Msg_Exec_InstallSoftware string = "installsoftware"
const Msg_Exec_CopyWeDrive string = "copyWeDrive"
const Msg_Exec_CopyDeptShare string = "copydeptshare"
const Msg_Exec_GUIExec string = "guiexec"
// msg error type ///////////////////////////////////////////////////////////////
......@@ -190,6 +191,13 @@ func GJexecUserCmd(s string) interface{}{
exec.Status = Msg_Exec_State_Ack
return exec
}
func GJexecGUI(s string) interface{}{
var exec MJexec
exec.init(Msg_Exec_GUIExec)
exec.Command = s
exec.Status = Msg_Exec_State_Ack
return exec
}
func (exec * MJexec)init(s string){
exec.Dept = User_dept
exec.Username = User_name
......@@ -217,7 +225,6 @@ func (bak * MJbackup)init() {
bak.MsgType = Msg_Backup
bak.Version = BackupVersion
bak.Status = Msg_Backup_Status_Start
bak.Version = Version
}
// error
......
......@@ -204,3 +204,6 @@ func NowTimestamp() int64 {
func UnixTimeParse(t *int64) string {
return time.Unix(*t,0).String()
}
func GetStrTime() string{
return time.Now().String()
}
\ No newline at end of file
......@@ -12,8 +12,7 @@ import (
func SendDaemon(v interface{})[]byte{
return SendMsg(LocalDaemon,v)
}
// func SendDaemonGuiExec(s stirng)
// SendDaemon()
func SendDaemonExec(s string){
SendDaemon(GJexecUserCmd(s))
}
......@@ -23,7 +22,9 @@ func SendServerReport(s string)[]byte{
func SendServerExec(s string)[]byte{
return SendServer(GJexec(s))
}
func SendServerGUIExec(s string){
SendServer(GJexecGUI(s))
}
func SendServerError(s string)[]byte{
return SendServer(GJerror(&s))
}
......
package public
import (
"time"
)
// 关于 操作时间 的 结构体
type DoTime struct{
Str string
T time.Time
}
// 判断 是否早于i小时
// 返回 是:早于i小时
// 返回 否:晚于i小时
func (dt * DoTime) base(){
if dt.Str != ""{
time.Parse("2020-05-24 17:06:47 +0800 CST",dt.Str)
}
}
func (dt * DoTime) BeforeHour(i int) bool{
var err error
if dt.Str != ""{
dt.T,err = time.Parse("2006-01-02 15:04:05.999999999 -0700 MST",dt.Str)
if err !=nil {
PrintLog(err)
return false
}
}
if dt.T.Add(time.Duration(5)*time.Hour).Before(time.Now()){
return true
}
return false
}
\ No newline at end of file
......@@ -190,3 +190,23 @@ func Reg_Write_key_one(root int, path, name, value string) {
PrintLog(kerr)
}
}
// func Reg_Write_AD(key , value * string){
// Reg_Write_key_one(
// Reg_Root_achome,
// Reg_Path_achome,
// *key,
// *value)
// }
func Reg_Write_DC(key , value string){
Reg_Write_key_one(
Reg_Root_dc,
Reg_Path_home,
key,
value)
}
func Reg_Query_DC(key string) string {
return Reg_query_key_one(
Reg_Root_dc,
Reg_Path_home,
key)
}
\ No newline at end of file
......@@ -61,6 +61,7 @@ func menuInitPower(ni * walk.NotifyIcon){
// 电源管理 下班
func pWorkOff(){
public.SendServerReport(public.Msg_Report_Offwork)
}
// 电源管理 关机
func pCloseWindows(){
......@@ -150,7 +151,7 @@ func siEnter_admin(softname string){
// 微盘同步
func menuInitWxDriveSync(ni * walk.NotifyIcon){
fa := "微盘同步"
sub := [...]string{"初始化","同步部门共享盘到微盘(手动)","同步部门共享盘到服务器(手动)","说明"}
sub := [...]string{"初始化","同步部门共享盘到微盘(自动)","同步微盘部门共享文件到本地服务器(手动)","备份微盘非公共文件夹(自动)","说明"}
// 建立空菜单
nm,err := walk.NewMenu()
if err != nil {
......@@ -173,6 +174,8 @@ func menuInitWxDriveSync(ni * walk.NotifyIcon){
case 2:
na.Triggered().Attach(wxdsToServer)
case 3:
na.Triggered().Attach(func(){wxdsToLocal(true)})
case 4:
na.Triggered().Attach(wxdsExplain)
}
......@@ -194,19 +197,22 @@ func menuInitWxDriveSync(ni * walk.NotifyIcon){
}
// 微盘同步 初始化
func wxdsInit(){
explain := "选择个人ID,请根据微盘的文件夹所在位置进行选择,确定并选择并点击文件夹(一串数字)后,点击确定继续进行下一步!具体操作方法点击说明!"
initDir := public.User_Dir_WeDrive
FullWeDrive := public.ChooseFolder(&explain,&initDir)
FullWeDrive = FullWeDrive+`\WeDrive\知微数据`
explain := "选择个人ID(一般是168开头),请根据微盘的文件夹所在位置进行选择,确定并选择并点击文件夹(一串数字)后,点击确定继续进行下一步!具体操作方法点击说明!"
var FullWeDrive string
for _,i := range public.User_Dir_WeDrive{
if public.Exist(i + `\Global`){
FullWeDrive = public.ChooseFolder(&explain,&i)+`\WeDrive\知微数据`
continue
}
}
public.PrintLog(FullWeDrive)
if public.NotExist(FullWeDrive){
public.Msg("不存在知微数据文件夹,请重新选择")
return
}
public.Reg_Write_key_one(
public.HKCU,
public.Reg_Path_achome,
public.Reg_Name_achome_dc_WeDriveDir,
public.Reg_Write_DC(
public.Reg_Name_WeDriveDir,
FullWeDrive)
public.Msg("初始化完毕,请在微盘中创建文件夹(办公室部门内部共享),并分享给同事,创建后,点击开始同步即可。")
}
......@@ -215,25 +221,40 @@ func wxdsToDrive(){
if public.Msg_YesNo("确定手动进行一次 -> 从共享盘同步到微盘吗?如果调整过共享盘的文件结构,请先在微盘中同步调整,否则微盘将会混沌。")==1{
public.SendServer(public.GJexecCopyWeDrive(public.Msg_Exec_CopyWeDrive))
public.Msg("同步完成!")
}
}
// 微盘同步 同步到服务器
func wxdsToServer(){
reg_Value_WeDriveDir := public.Reg_query_key_one(
public.HKCU,
public.Reg_Path_achome,
public.Reg_Name_achome_dc_WeDriveDir)
reg_Value_WeDriveDir := public.Reg_Query_DC(public.Reg_Name_WeDriveDir)
weDrive_Share_Dir := reg_Value_WeDriveDir +`\` + public.Zhiwei_WxDrive_Folder
if reg_Value_WeDriveDir != "" && public.Exist(weDrive_Share_Dir){
if public.Msg_YesNo("确定手动进行一次 -> 从微盘到共享盘吗?如果俩者文件结构不一致,文件盘将会混沌。")==1{
cmd := `cmd /c xcopy ` + weDrive_Share_Dir + " /D " + public.Env_ADMainDeptShare + " /S /T /E /C /y"
cmd := `cmd /c xcopy ` + weDrive_Share_Dir + public.Env_ADMainDeptShare + "/D /S /E /C /y"
public.Execcmd_wait(cmd)
public.SendServerReport(public.Msg_Report_OverCopyToDeptShare)
public.Msg("同步完成!")
}
}else{
public.Msg("未进行初始化或当前微盘路径错误,请重新初始化。微盘路径信息:"+reg_Value_WeDriveDir)
}
}
// 微盘同步 备份微盘非公共文件到本地
func wxdsToLocal(msgshow bool){
reg_Value_WeDriveDir := public.Reg_Query_DC(public.Reg_Name_WeDriveDir)
if public.Exist(reg_Value_WeDriveDir){
if msgshow {
public.Msg_YesNo("确定手动进行一次 -> 备份微盘非公共文件到本地吗?没有副作用,也没有完成提醒!")
}
cmd := `cmd /c xcopy ` + reg_Value_WeDriveDir + " " + public.User_Die_WeDriveBackup + " /D /S /E /C /y"
public.PrintLog(cmd)
public.SendDaemonExec(cmd)
}else{
if msgshow {
public.Msg("未进行初始化或当前微盘路径错误,请重新初始化。微盘路径信息:"+reg_Value_WeDriveDir)
}
}
}
......@@ -267,7 +288,7 @@ func wxdsExplain(){
func menuInitTools(ni * walk.NotifyIcon){
fa := "工具集合"
sub := [...]string{"Excel关键词分割","隐藏桌面图标","显示桌面图标","移动硬盘","测试"}
sub := [...]string{"Excel关键词分割","隐藏桌面图标","显示桌面图标","移动硬盘(胡一波)","键盘驱动(许文强)","测试"}
// 建立空菜单
nm,err := walk.NewMenu()
if err != nil {
......@@ -278,8 +299,11 @@ func menuInitTools(ni * walk.NotifyIcon){
// 过滤按钮
switch i{
case lastone-1:
case lastone-2:
if ! public.TheUser(public.AD_User_huyibo) {continue}
case lastone-1:
if ! public.TheUser(public.AD_User_xuwenqiang) {continue}
case lastone:
if ! public.AdminUser() {continue}
}
......@@ -300,8 +324,10 @@ func menuInitTools(ni * walk.NotifyIcon){
na.Triggered().Attach(tShowIcon)
case lastone-2:
na.Triggered().Attach(t_movedisk_huyibo)
case lastone-1:
na.Triggered().Attach(tJR_huyibo_movedisk)
na.Triggered().Attach(t_keyboard_xuwenqiang)
case lastone:
na.Triggered().Attach(tTest)
......@@ -325,12 +351,15 @@ func menuInitTools(ni * walk.NotifyIcon){
}
// 其他工具 Excel关键词分割器
func tMultiSplit(){
public.Execcmd_nowait(public.Startk + public.Link_MultiSplit)
public.Execcmd_nowait(public.Startk + public.App_MultiSplit)
}
// 其他工具 移动硬盘(胡一波专用)
func tJR_huyibo_movedisk(){
func t_movedisk_huyibo(){
public.SendDaemonExec(`F:\SamsungPortableSSD.exe`)
}
func t_keyboard_xuwenqiang(){
public.SendServerGUIExec(`start C:\Users\Public\Desktop\Durgod_Zeus_Engine.lnk`)
}
// 其他工具 隐藏图标
func tHideIcon(){
public.Msg("emmmmmmm,大概下周吧,这周无望哈")
......
No preview for this file type
......@@ -5,12 +5,13 @@ import (
"AD-Control/public"
)
func userInit() string{
public.Reg_Exist_item(public.HKCU,public.Reg_Path_achome)
public.Reg_Exist_item(public.HKCU,public.Reg_Path_home)
// 1 同步服务器文件共享到为微盘
if public.Reg_Value_WeDriveDir != "" && public.Exist(public.Zhiwei_WxDrive_Full_Folder){
// 如果微盘的文件夹存在
// 则,重复执行
// 随机延迟300s,进行复制,固定延迟2h
if public.Reg_Value_WeDriveDir != "" && public.Exist(public.Zhiwei_WxDrive_Full_Folder){
go func (){
for{
public.RandDelay(300)
......@@ -19,6 +20,11 @@ func userInit() string{
}
}()
}
// 2 备份微盘文件到本地
go wxdsToLocal(false)
// 3 初始化 图标文件
var icoDir =[]string {`AD-Control.ico`,`C:\windows\system32\AD-Control.ico`,`C:\Users\Public\Documents\AD-Control\AD-Control.ico`}
for _,i := range icoDir{
if public.Exist(i){
......@@ -26,6 +32,7 @@ func userInit() string{
}
}
public.SendServerError("no icon file")
return ""
}
func menuInit(ni * walk.NotifyIcon){
......@@ -42,8 +49,6 @@ func main() {
// 用户初始化
icodir := userInit()
public.PrintLog(icodir)
// 程序初始化
mw,err := walk.NewMainWindow()
if err != nil {
......@@ -76,10 +81,6 @@ func main() {
public.PrintLog(err)
}
// init over
public.SendServerReport(public.Msg_Report_UserStart)
// 循环 运行窗体
mw.Run()
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment