Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
AD-Control-Golang
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陶腾飞
AD-Control-Golang
Commits
0a7cbf9e
Commit
0a7cbf9e
authored
Jul 27, 2020
by
陶腾飞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
v1.4.0更新图标显示/隐藏工具,优化exec消息处理逻辑,优化企业微信知微运维平台
parent
a1412dfe
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
229 additions
and
318 deletions
+229
-318
daemon/daemon.go
+2
-2
public/env.go
+1
-1
public/msg_deal.go
+50
-95
public/msg_init.go
+21
-45
public/print.go
+7
-7
public/send.go
+1
-3
public/win.go
+31
-0
users/menu.go
+108
-153
users/users.go
+5
-11
wxwork/wxwork.go
+3
-1
No files found.
daemon/daemon.go
View file @
0a7cbf9e
...
...
@@ -42,10 +42,10 @@ func deamonRun(){
conn
.
Write
(
rec
)
// 关闭连接
if
err
:=
conn
.
Close
()
;
err
!=
nil
{
if
err
:=
conn
.
Close
()
;
err
!=
nil
{
pub
.
PntInfo
(
err
)
}
continue
}
else
{
pub
.
PntError
(
" Listen Error"
,
err
)
}
...
...
public/env.go
View file @
0a7cbf9e
...
...
@@ -8,7 +8,7 @@ const DaemonListen string = ":" + DaemonPort
const
ADServerDaemon
string
=
Host_adserver
+
DaemonListen
const
WxwrokDaemon
string
=
":16823"
const
RandMax
int
=
60
const
Version
string
=
"1.
3.1
"
const
Version
string
=
"1.
4.0
"
// user //
...
...
public/msg_deal.go
View file @
0a7cbf9e
...
...
@@ -29,14 +29,6 @@ func DealMsgEnter(ip string,msgtype string,unmsg []byte) []byte {
PntBackup
(
string
(
unmsg
))
ParseJsonBody
(
unmsg
,
&
pmsg
)
ret
=
pmsg
.
Msg_Deal
()
// 注册表 消息
case
Msg_Reg
:
var
pmsg
MJreg
PntReg
(
string
(
unmsg
))
ParseJsonBody
(
unmsg
,
&
pmsg
)
ret
=
pmsg
.
Msg_Deal
()
// 错误 消息
case
Msg_Error
:
PntError
(
string
(
unmsg
))
...
...
@@ -71,38 +63,13 @@ func (rep *MJreport)Msg_Deal() interface{} {
if
!
IsPrimaryUser
(
rep
.
Username
)
||
RunAsPC
(
rep
.
Username
){
return
nil
}
// isbak := false
// time:= rep.Reg_Query_AC(Reg_Name_BackupOverTime)
// // 第一次备份
// if time == "" {
// isbak= true
// } else if s,err := ParseTime(time);err !=nil{
// isbak= false
// PntError(err)
// // 第N次备份
// } else {
// // 下班点之后吗?
// if s.Hour() >= 15{
// isbak= true
// }else {
// isbak= false
// }
// }
// if isbak {
// }else{
// return GJexecAck(Msg_Exec_TurnOffPC)
// }
return
GJbackup
()
case
Msg_Report_OverBak
:
rep
.
Reg_Write_ADDC
(
Reg_Name_BackupOverTime
,
UnixTimeParse
(
&
rep
.
Timestamp
))
rep
.
Pskill
(
App_Sync
)
SysMsgBox
(
rep
.
Computername
,
`备份完成,即将关机,如需取消关机,运行Z:\tools\【工具】取消关机.bat或在小工具-电源管理-取消自动关机`
)
return
GJexec
Ack
(
Msg_Exec_TurnOffPC
)
return
GJexec
(
Msg_Exec_TurnOffPC
)
case
Msg_Report_WillTurnOffPC
:
rep
.
Reg_Write_ADDC
(
...
...
@@ -165,52 +132,59 @@ func (rep *MJreport)Msg_Deal() interface{} {
}
// 关于 exec 执行 的 消息处理
func
(
exec
*
MJexec
)
Msg_Deal
()
interface
{}{
exec
.
IfDelay
=
false
// 状态变更
switch
exec
.
Status
{
case
Msg_Exec_State_Request
:
exec
.
Status
=
Msg_Exec_State_Ack
case
Msg_Exec_State_Ack
:
exec
.
Status
=
Msg_Exec_State_Over
case
Msg_Exec_State_Over
:
if
exec
.
IfMsg
{
Msg
(
exec
.
Explain
)}
return
nil
}
// 消息处理
switch
exec
.
Instruction
{
case
Msg_Exec_TurnOffPC
:
exec
.
Command
=
Msg_Exec_TurnOffPC_cmd
exec
.
PsExec
()
exec
.
Status
=
Msg_Exec_State_Over
case
Msg_Exec_CancelTurnOffPC
:
exec
.
Command
=
Msg_Exec_CancelTurnOffPC_cmd
exec
.
PsExec
()
exec
.
Status
=
Msg_Exec_State_Over
case
Msg_Exec_LogOffUser
:
exec
.
Command
=
Msg_Exec_LogOffUser_cmd
exec
.
PsExec
()
exec
.
Status
=
Msg_Exec_State_Over
case
Msg_Exec_RebootWindows
:
exec
.
Command
=
Msg_Exec_RebootWindows_cmd
exec
.
PsExec
()
exec
.
Status
=
Msg_Exec_State_Over
case
Msg_Exec_HideShowIcon
:
var
hidetype
string
if
exec
.
DataBool
{
exec
.
Explain
=
"显示"
hidetype
=
"+"
}
else
{
exec
.
Explain
=
"隐藏"
hidetype
=
"-"
}
exec
.
Command
=
"attrib "
+
hidetype
+
`h `
+
exec
.
DataStr
exec
.
PsExec
()
exec
.
IfMsg
=
true
exec
.
Explain
=
"图标已"
+
exec
.
Explain
exec
.
Status
=
Msg_Exec_State_Over
switch
exec
.
Status
{
case
Msg_Exec_State_Request
:
// maybe 当然时我来控制咯
// 修改 请求状态,client daemon才可以执行
switch
exec
.
Instruction
{
case
Msg_Exec_CopyWeDrive
:
if
CopyStatusWeDrive
[
exec
.
Dept
]{
exec
.
Status
=
Msg_Exec_State_Ack
CopyStatusWeDrive
[
exec
.
Dept
]
=
false
}
else
{
return
nil
}
}
exec
.
Status
=
Msg_Exec_State_Ack
return
exec
case
Msg_Exec_State_Ack
:
// 进行延迟
//if exec.IfDelay {Delay(&exec.Delay)}
// 区分执行者
switch
exec
.
Cmder
{
case
Msg_Exec_Cmder_ADServer
:
switch
exec
.
Instruction
{
// 软件安装
case
Msg_Exec_InstallSoftware
:
// 对于 msi 格式
// 从\\adserver安装
...
...
@@ -229,27 +203,17 @@ func (exec *MJexec)Msg_Deal()interface{}{
PsExec_sdic
(
exec
.
Computername
,
Dir_ADsoftware_local
+
exec
.
Command
,
exec
.
SessionID
)
}
}
}
default
:
Execcmd_nowait
(
exec
.
Command
)
}
switch
exec
.
Instruction
{
case
Msg_Exec_GUIExec
:
PsExec_sdi
(
exec
.
Computername
,
exec
.
Command
,
exec
.
SessionID
)
exec
.
Status
=
Msg_Exec_State_Over
case
Msg_Exec_CopyWeDrive
:
reg_Value_WeDriveDir
:=
Reg_query_key_one
(
HKCU
,
Reg_Path_home
,
Reg_Name_WeDriveDir
)
cmd
:=
`cmd /c xcopy `
+
SMB_ADMainDeptShare
+
" /D "
+
reg_Value_WeDriveDir
+
`\`
+
Dir_dept_share
+
" /S /T /E /C /y"
Execcmd_wait
(
cmd
)
SendServerReport
(
Msg_Report_OverCopyToWeDrive
)
}
default
:
Execcmd_nowait
(
exec
.
Command
)
}
return
nil
return
exec
}
// 关于 backup 备份 的 消息处理
func
(
bak
*
MJbackup
)
Msg_Deal
()
interface
{}{
...
...
@@ -327,25 +291,6 @@ func (bak * MJbackup)Msg_Deal() interface{}{
}
// 关于 registry 注册表 的 消息处理
func
(
reg
*
MJreg
)
Msg_Deal
()
interface
{}{
switch
reg
.
Action
{
case
Msg_Reg_Query
:
reg
.
DataStr
=
Reg_query_key_one
(
reg
.
Root
,
reg
.
Path
,
reg
.
Key
)
}
return
reg
}
// 关于 error 错误 的 消息处理
func
(
err
*
MJerror
)
Msg_Deal
()
interface
{}{
//SendWX(err.Instruction)
return
nil
}
// 关于 wxwork 企业微信 的 消息处理
...
...
@@ -384,7 +329,7 @@ func (wxwork * MJwxwork)Msg_Deal() interface{}{
// 只有域用户有效
// 写入被唤醒的ID用于判断是否是被企业微信唤醒
if
!
zhiweiuser
{
if
zhiweiuser
{
Reg_Write_ADDC
(
pc
,
Reg_Name_BeWakedID
,
wxwork
.
UserID
)
go
func
(
userid
string
){
for
i
:=
0
;
i
<
10
;
i
++
{
...
...
@@ -392,6 +337,7 @@ func (wxwork * MJwxwork)Msg_Deal() interface{}{
status
,
_
:=
PSTest_Connection
(
pc
)
if
status
{
SendWxworkTextToAUser
(
userid
,
"主机已启动!"
)
return
}
}
}(
wxwork
.
UserID
)
...
...
@@ -408,3 +354,12 @@ func (wxwork * MJwxwork)Msg_Deal() interface{}{
return
wxwork
}
// 关于 error 错误 的 消息处理
func
(
err
*
MJerror
)
Msg_Deal
()
interface
{}{
//SendWX(err.Instruction)
return
nil
}
public/msg_init.go
View file @
0a7cbf9e
...
...
@@ -13,7 +13,6 @@ const msgerror string = "error"
const
Msg_Report
string
=
"report"
const
Msg_Exec
string
=
"exec"
const
Msg_Backup
string
=
"backup"
const
Msg_Reg
string
=
"reg"
const
Msg_Error
string
=
"error"
const
Msg_Wxwork
string
=
"wxwork"
...
...
@@ -68,22 +67,26 @@ const (
)
const
Msg_Exec_State_Request
string
=
"request"
const
Msg_Exec_State_Ack
string
=
"ack"
const
Msg_Exec_State_Over
string
=
"over"
const
Msg_Exec_TurnOffPC
string
=
TurnOffPC
const
Msg_Exec_TurnOffPC_cmd
string
=
"shutdown -s -t 300"
const
Msg_Exec_CancelTurnOffPC
string
=
"cancel"
+
TurnOnPC
const
Msg_Exec_CancelTurnOffPC_cmd
string
=
"shutdown -a"
const
Msg_Exec_LogOffUser
string
=
LogOutUser
const
Msg_Exec_LogOffUser_cmd
string
=
"shutdown -l"
const
Msg_Exec_UserExec
string
=
"userexec"
const
Msg_Exec_RebootWindows
string
=
"rebootWindows"
const
Msg_Exec_RebootWindows_cmd
string
=
"shutdown -r -t 15"
const
Msg_Exec_InstallSoftware
string
=
"installsoftware"
const
Msg_Exec_CopyWeDrive
string
=
"copyWeDrive"
const
Msg_Exec_CopyDeptShare
string
=
"copydeptshare"
const
Msg_Exec_GUIExec
string
=
"guiexec"
const
Msg_Exec_HideShowIcon
string
=
"HideShowIcon"
// msg wxwork type ////////////////////////////////////////////////////////////////
const
Msg_Wxwork_UserWake
string
=
"UserWake"
//
// Registry Root
const
(
Msg_Reg_Query
=
iota
Msg_Reg_Read
...
...
@@ -116,9 +119,9 @@ type MJreport struct {
type
MJexec
struct
{
MJbase
Command
string
`json:"command"`
Cmder
int
`josn:"cmder"`
SessionID
string
`json:"sessionid"`
IfDelay
bool
`josn:"ifDelay"`
IfMsg
bool
`josn:"ifMsg"`
Delay
string
`json:"delay"`
}
// backup Json Format /////////////////////////////////////////////////////
...
...
@@ -126,16 +129,6 @@ type MJbackup struct{
MJbase
Version
string
`json:"version"`
}
// registry Json Format /////////////////////////////////////////////////////
type
MJreg
struct
{
MJbase
Action
int
`json:"action"`
Root
int
`json:"root"`
Path
string
`json:"path"`
Key
string
`json:"key"`
DataType
int
`json:"datatype"`
}
// error Json Format /////////////////////////////////////////////////////
type
MJerror
struct
{
MJbase
...
...
@@ -158,7 +151,6 @@ type MJwxwork struct {
//
// Report
func
GJreport
(
s
string
)
interface
{}{
...
...
@@ -203,46 +195,26 @@ func (rep * MJreport)init(Report string) {
func
GJexec
(
s
string
)
MJexec
{
var
exec
MJexec
exec
.
init
(
s
)
return
exec
}
func
GJexecAck
(
s
string
)
interface
{}{
var
exec
MJexec
exec
.
init
(
s
)
exec
.
Status
=
Msg_Exec_State_Ack
return
exec
}
func
GJexecCopyWeDrive
(
s
string
)
MJexec
{
var
exec
MJexec
exec
.
init
(
s
)
exec
.
DataStr
=
User_dept
exec
.
Init
(
s
)
return
exec
}
func
GJexecInstallSoftware
(
b
bool
,
s
string
)
interface
{}{
var
exec
MJexec
exec
.
init
(
s
)
exec
.
Status
=
Msg_Exec_State_Ack
exec
.
Init
(
s
)
exec
.
DataBool
=
b
exec
.
Cmder
=
Msg_Exec_Cmder_ADServer
exec
.
Instruction
=
Msg_Exec_InstallSoftware
exec
.
Command
=
s
return
exec
}
func
GJexecUserCmd
(
s
string
)
interface
{}{
var
exec
MJexec
exec
.
i
nit
(
""
)
exec
.
I
nit
(
""
)
exec
.
Command
=
s
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
){
func
(
exec
*
MJexec
)
Init
(
s
string
){
exec
.
Dept
=
User_dept
exec
.
Username
=
User_name
exec
.
Computername
=
User_computername
...
...
@@ -250,12 +222,16 @@ func (exec * MJexec)init(s string){
exec
.
MsgType
=
Msg_Exec
exec
.
Instruction
=
s
exec
.
SessionID
=
User_sessionID
exec
.
Cmder
=
Msg_Exec_Cmder_LocalDaemon
exec
.
Status
=
Msg_Exec_State_Request
exec
.
IfMsg
=
false
}
func
(
exec
*
MJexec
)
PsExec
(){
PsExec_sd
(
exec
.
Computername
,
exec
.
Command
)
}
// Backup
func
GJbackup
()
interface
{}{
...
...
@@ -309,7 +285,7 @@ func (wxwork * MJwxwork)Reg_Query_ADUsers(key string) string{
Reg_Path_home_du
+
wxwork
.
Name
,
key
)
}
func
(
wxwork
*
MJwxwork
)
Reg_Query_ZhiWeiUsers
(
key
string
)
string
{
func
(
wxwork
*
MJwxwork
)
Reg_Query_ZhiWeiUsers
(
key
string
)
string
{
return
Reg_query_key_one
(
Reg_Root_ac
,
Reg_Path_home_zhu
+
wxwork
.
Name
,
...
...
public/print.go
View file @
0a7cbf9e
...
...
@@ -83,23 +83,23 @@ func PntSend(v ...interface{}){
}
func
PrintPrefix
(
s
string
,
v
...
interface
{}){
Loger
.
SetPrefix
(
s
)
PrintLog
(
v
...
)
log
.
Println
(
v
...
)
Loger
.
Println
(
v
...
)
}
func
PntWxwork
(
v
...
interface
{}){
Loger
.
SetPrefix
(
"WXWORK"
)
PrintLog
(
v
...
)
Loger
.
SetPrefix
(
"WXWORK"
)
log
.
Println
(
v
...
)
Loger
.
Println
(
v
...
)
}
func
PntWxworkf
(
f
string
,
v
...
interface
{}){
Loger
.
SetPrefix
(
"WXWORK"
)
log
.
Print
f
(
f
,
v
...
)
Loger
.
SetPrefix
(
"WXWORK
"
)
log
.
Print
ln
(
v
...
)
Loger
.
Printf
(
f
,
v
...
)
}
func
PntWxSendMsgText
(
v
...
interface
{}){
Loger
.
SetPrefix
(
"WxSendMsgText"
)
PrintLog
(
v
...
)
Loger
.
SetPrefix
(
"WxSendMsgText
"
)
log
.
Println
(
v
...
)
Loger
.
Println
(
v
...
)
}
public/send.go
View file @
0a7cbf9e
...
...
@@ -21,9 +21,7 @@ func SendServerDCInfo(s string)([]byte,error){
func
SendServerExec
(
s
string
)([]
byte
,
error
){
return
SendServer
(
GJexec
(
s
))
}
func
SendServerGUIExec
(
s
string
){
SendServer
(
GJexecGUI
(
s
))
}
func
SendServerError
(
err
error
)([]
byte
,
error
){
return
SendServer
(
GJerror
(
err
))
}
...
...
public/win.go
View file @
0a7cbf9e
...
...
@@ -133,6 +133,37 @@ func Execcmd_nowait_noargs(app string){
//
// PowerShell
//
func
PSCommandOutput
(
cmd
string
)
(
string
,
error
)
{
if
cmd
==
""
{
return
""
,
Error_Lost_Parameter
}
cmd
=
"powershell -command "
+
cmd
app
,
appargs
,
err
:=
execcmd_base
(
cmd
)
if
err
!=
nil
{
return
""
,
err
}
r
,
err
:=
exec
.
Command
(
app
,
appargs
...
)
.
Output
()
if
err
!=
nil
{
return
""
,
err
}
out
,
err
:=
simplifiedchinese
.
GBK
.
NewDecoder
()
.
Bytes
(
r
)
if
err
!=
nil
{
return
""
,
err
}
return
string
(
out
),
nil
}
func
PSCommandOutputNoSplit
(
cmd
string
)
(
string
,
error
)
{
if
cmd
==
""
{
return
""
,
Error_Lost_Parameter
}
r
,
err
:=
exec
.
Command
(
"powershell"
,
"-command"
,
cmd
)
.
Output
()
if
err
!=
nil
{
return
""
,
err
}
return
string
(
r
),
nil
}
func
PSTest_Connection
(
host
string
)
(
bool
,
error
)
{
if
host
==
""
{
return
false
,
Error_Lost_Parameter
...
...
users/menu.go
View file @
0a7cbf9e
...
...
@@ -2,7 +2,7 @@ package main
import
(
"github.com/lxn/walk"
.
"github.com/lxn/walk/declarative"
"
fmt
"
"
strings
"
pub
"AD-Control/public"
)
...
...
@@ -139,123 +139,6 @@ func siEnter_admin(softname string){
//---------------------------------------------------------------
//
// WxDrive Sync
//
//---------------------------------------------------------------
// 微盘同步
func
menuInitWxDriveSync
(
ni
*
walk
.
NotifyIcon
){
fa
:=
"微盘同步"
sub
:=
[
...
]
string
{
"初始化"
,
"同步部门共享盘到微盘(自动)"
,
"同步微盘部门共享文件到本地服务器(手动)"
,
"说明"
}
// 建立空菜单
nm
,
err
:=
walk
.
NewMenu
()
if
err
!=
nil
{
pub
.
PntError
(
err
)
}
for
i
,
buttonText
:=
range
sub
{
// 建立 子按钮
na
:=
walk
.
NewAction
()
if
err
:=
na
.
SetText
(
buttonText
);
err
!=
nil
{
pub
.
PntError
(
err
)
}
// 为子按钮 添加事件
switch
i
{
case
0
:
na
.
Triggered
()
.
Attach
(
wxdsInit
)
case
1
:
na
.
Triggered
()
.
Attach
(
wxdsToDrive
)
case
2
:
na
.
Triggered
()
.
Attach
(
wxdsToServer
)
case
3
:
na
.
Triggered
()
.
Attach
(
wxdsExplain
)
}
// 将 子按钮 添加到 菜单
nm
.
Actions
()
.
Add
(
na
)
}
//将菜单添加到托盘
sysmenu
,
err
:=
ni
.
ContextMenu
()
.
Actions
()
.
AddMenu
(
nm
)
if
err
!=
nil
{
pub
.
PntError
(
err
)
}
// 主菜单 属性
sysmenu
.
SetText
(
fa
)
sysmenu
.
SetVisible
(
true
)
sysmenu
.
SetEnabled
(
true
)
}
// 微盘同步 初始化
func
wxdsInit
(){
explain
:=
"选择个人ID(一般是168开头),请根据微盘的文件夹所在位置进行选择,确定并选择并点击文件夹(一串数字)后,点击确定继续进行下一步!具体操作方法点击说明!"
var
FullWeDrive
string
for
_
,
i
:=
range
pub
.
Dir_WeDrive
{
if
pub
.
Exist
(
i
+
`\Global`
){
FullWeDrive
=
pub
.
ChooseFolder
(
&
explain
,
&
i
)
+
`\WeDrive\知微数据`
continue
}
}
pub
.
PntInfo
(
FullWeDrive
)
if
pub
.
NotExist
(
FullWeDrive
){
pub
.
Msg
(
"不存在知微数据文件夹,请重新选择"
)
return
}
pub
.
Reg_Write_DC
(
pub
.
Reg_Name_WeDriveDir
,
FullWeDrive
)
pub
.
Msg
(
"初始化完毕,请在微盘中创建文件夹(办公室部门内部共享),并分享给同事,创建后,点击开始同步即可。"
)
}
// 微盘同步 同步到微盘
func
wxdsToDrive
(){
if
pub
.
Msg_YesNo
(
"确定手动进行一次 -> 从共享盘同步到微盘吗?如果调整过共享盘的文件结构,请先在微盘中同步调整,否则微盘将会混沌。"
)
==
1
{
pub
.
SendServer
(
pub
.
GJexecCopyWeDrive
(
pub
.
Msg_Exec_CopyWeDrive
))
pub
.
Msg
(
"同步完成!"
)
}
}
// 微盘同步 同步到服务器
func
wxdsToServer
(){
reg_Value_WeDriveDir
:=
pub
.
Reg_Query_DC
(
pub
.
Reg_Name_WeDriveDir
)
weDrive_Share_Dir
:=
reg_Value_WeDriveDir
+
`\`
+
pub
.
Dir_dept_share
if
reg_Value_WeDriveDir
!=
""
&&
pub
.
Exist
(
weDrive_Share_Dir
){
if
pub
.
Msg_YesNo
(
"确定手动进行一次 -> 从微盘到共享盘吗?如果俩者文件结构不一致,文件盘将会混沌。"
)
==
1
{
cmd
:=
`cmd /c xcopy `
+
weDrive_Share_Dir
+
pub
.
SMB_ADMainDeptShare
+
"/D /S /E /C /y"
pub
.
Execcmd_wait
(
cmd
)
pub
.
SendServerReport
(
pub
.
Msg_Report_OverCopyToDeptShare
)
pub
.
Msg
(
"同步完成!"
)
}
}
else
{
pub
.
Msg
(
"未进行初始化或当前微盘路径错误,请重新初始化。微盘路径信息:"
+
reg_Value_WeDriveDir
)
}
}
// 微盘同步 说明
func
wxdsExplain
(){
msg
:=
`
1.此功能,部门内部的路人甲初始化一次即可,并分享微盘文件夹给炮灰乙、流氓丙即可。
2.当路人甲没有启动这个小工具时,土匪丁想要同步的话,也时需要初始化。
5.初始化后,凡是启动了小工具,2小时自动同步一次到微盘。但从微盘同步到部门共享盘中只能是手动的。
7.但限于微盘的特性,当文件共享盘的文件名发生变化,微盘是依旧保留旧文件夹的。所以微盘的文件时需要定期手动清理的。
9.关于初始化中路径选择问题:打开微盘,右键打开已下载的文件。根据该文件所在的路径来确定初始化中的路径。
8.以上,此致,敬礼,望赞!
`
pub
.
Msg
(
msg
)
}
//---------------------------------------------------------------
//
// Kinds of Tools
//
//---------------------------------------------------------------
...
...
@@ -264,7 +147,7 @@ func wxdsExplain(){
func
menuInitTools
(
ni
*
walk
.
NotifyIcon
){
fa
:=
"工具集合"
sub
:=
[
...
]
string
{
"Excel关键词分割"
,
"备份用户文件"
,
"优雅批量打开网页"
,
"隐藏
桌面图标"
,
"显示桌面图标"
,
"更新手机代理程序"
,
"移动硬盘(胡一波)"
,
"键盘驱动(徐文强)"
,
"测试
"
}
sub
:=
[
...
]
string
{
"Excel关键词分割"
,
"备份用户文件"
,
"优雅批量打开网页"
,
"隐藏
/显示桌面图标"
,
"更新手机代理程序"
,
"移动硬盘(胡一波)
"
}
// 建立空菜单
nm
,
err
:=
walk
.
NewMenu
()
if
err
!=
nil
{
...
...
@@ -275,13 +158,8 @@ func menuInitTools(ni * walk.NotifyIcon){
// 过滤按钮
switch
i
{
case
lastone
-
2
:
if
!
pub
.
TheUser
(
pub
.
AD_User_huyibo
)
{
continue
}
case
lastone
-
1
:
if
!
pub
.
TheUser
(
pub
.
AD_User_xuwenqiang
)
{
continue
}
case
lastone
:
if
!
pub
.
AdminUser
(
&
pub
.
User_name
)
{
continue
}
if
!
pub
.
TheUser
(
pub
.
AD_User_huyibo
)
{
continue
}
}
// 建立 子按钮
...
...
@@ -299,17 +177,11 @@ func menuInitTools(ni * walk.NotifyIcon){
case
2
:
na
.
Triggered
()
.
Attach
(
tBatchOpenWeb
)
case
3
:
na
.
Triggered
()
.
Attach
(
tHideIcon
)
na
.
Triggered
()
.
Attach
(
tHide
Show
Icon
)
case
4
:
na
.
Triggered
()
.
Attach
(
tShowIcon
)
case
5
:
na
.
Triggered
()
.
Attach
(
tUpdateATool
)
case
lastone
-
2
:
na
.
Triggered
()
.
Attach
(
t_movedisk_huyibo
)
case
lastone
-
1
:
na
.
Triggered
()
.
Attach
(
t_keyboard_xuwenqiang
)
case
lastone
:
na
.
Triggered
()
.
Attach
(
tTest
)
case
5
:
na
.
Triggered
()
.
Attach
(
tmovedisk_huyibo
)
}
...
...
@@ -339,7 +211,7 @@ func tBatchOpenWeb(){
MainWindow
{
Title
:
"优雅批量打开网页"
,
Size
:
Size
{
600
,
2
00
},
Size
:
Size
{
600
,
3
00
},
Layout
:
VBox
{},
Children
:
[]
Widget
{
HSplitter
{
...
...
@@ -357,7 +229,7 @@ func tBatchOpenWeb(){
}
pub
.
Execcmd_nowait
(
`C:\Progra~2\Google\Chrome\Application\chrome.exe `
+
web
)
pub
.
Delay
(
2
)
outTE
.
AppendText
(
fmt
.
Sprintf
(
"%d %s
\n
"
,
seq
+
1
,
web
))
outTE
.
AppendText
(
pub
.
Sprintf
(
"%d %s
\n
"
,
seq
+
1
,
web
))
}
},
...
...
@@ -378,7 +250,6 @@ func tBakcupUser(){
pub
.
SendServerReport
(
pub
.
Msg_Report_StartBak
)
}
}
// 其他工具 更新手机代理程序
func
tUpdateATool
(){
pub
.
Execcmd_wait
(
`xcopy \\adserver\software\phoneproxy\ATools\win-unpacked C:\Application\win-unpacked /D /S /E /C /y`
)
...
...
@@ -386,25 +257,37 @@ func tUpdateATool(){
}
// 其他工具 移动硬盘(胡一波专用)
func
t
_
movedisk_huyibo
(){
func
tmovedisk_huyibo
(){
//pub.SendDaemonExec(`F:\SamsungPortableSSD.exe`)
}
func
t_keyboard_xuwenqiang
(){
pub
.
SendServerGUIExec
(
`start C:\Users\Public\Desktop\Durgod_Zeus_Engine.lnk`
)
}
// 其他工具 隐藏图标
func
tHideIcon
(){
pub
.
Msg
(
"emmmmmmm,大概下周吧,这周无望哈"
)
}
// 其他工具 显示图标
func
tShowIcon
(){
pub
.
Msg
(
"仅供参考!!"
)
}
// 其他工具 测试
func
tTest
(){
//pub.SendDaemonExec(`D:\WXWork.exe`)
}
// 其他工具 隐藏/显示桌面图标
func
tHideShowIcon
(){
pub
.
Msg
(
"注:并非所有图标都会列出,没有列出的图标请手动隐藏(右键文件,打开属性,勾选隐藏,点击确定)"
)
mw
:=
&
MyMainWindow
{
model
:
NewEnvModel
()}
if
_
,
err
:=
(
MainWindow
{
AssignTo
:
&
mw
.
MainWindow
,
Title
:
"隐藏/显示桌面图标"
,
MinSize
:
Size
{
300
,
400
},
Size
:
Size
{
300
,
400
},
Layout
:
VBox
{},
Children
:
[]
Widget
{
ListBox
{
AssignTo
:
&
mw
.
lb
,
Model
:
mw
.
model
,
OnItemActivated
:
mw
.
tHideShowIconDeal
,
},
PushButton
{
Text
:
"隐藏/显示"
,
OnClicked
:
mw
.
tHideShowIconDeal
,
},
},
}
.
Run
());
err
!=
nil
{
pub
.
Msg
(
"执行错误"
)
pub
.
PntError
(
err
)
}
}
//---------------------------------------------------------------
//
...
...
@@ -503,6 +386,7 @@ func menuInitFileShares(ni * walk.NotifyIcon){
//
//---------------------------------------------------------------
// 我的共享:本部门的共享
func
menuInitMyShares
(
ni
*
walk
.
NotifyIcon
){
fa
:=
"我的共享"
...
...
@@ -546,3 +430,73 @@ func menuInitMyShares(ni * walk.NotifyIcon){
sysmenu
.
SetEnabled
(
true
)
}
//---------------------------------------------------------------
//
// Windows Menu Deal
//
//---------------------------------------------------------------
type
MyMainWindow
struct
{
*
walk
.
MainWindow
model
*
EnvModel
lb
*
walk
.
ListBox
}
func
(
mw
*
MyMainWindow
)
tHideShowIconDeal
()
{
app
:=
(
&
mw
.
model
.
items
[
mw
.
lb
.
CurrentIndex
()])
.
name
fullAppDir
:=
`C:\Users\public\desktop\`
+
app
+
`.lnk`
var
exec
pub
.
MJexec
exec
.
Init
(
pub
.
Msg_Exec_HideShowIcon
)
exec
.
DataStr
=
fullAppDir
r
,
err
:=
pub
.
PSCommandOutputNoSplit
(
`(Get-Item `
+
fullAppDir
+
` -Force ).Attributes`
)
if
err
!=
nil
{
pub
.
Msg
(
"执行失败"
)
return
}
if
strings
.
Index
(
r
,
"Hidden"
)
==
-
1
{
exec
.
DataBool
=
true
}
else
{
exec
.
DataBool
=
false
}
pub
.
SendServer
(
exec
)
}
type
EnvItem
struct
{
name
string
}
type
EnvModel
struct
{
walk
.
ListModelBase
items
[]
EnvItem
}
func
NewEnvModel
()
*
EnvModel
{
r
,
err
:=
pub
.
PSCommandOutput
(
`Get-ChildItem -Force -Filter *.lnk C:\Users\Public\Desktop -Name`
)
if
err
!=
nil
{
pub
.
Msg
(
"执行失败"
)
return
nil
}
list
:=
strings
.
Split
(
r
,
"
\n
"
)
m
:=
&
EnvModel
{
items
:
make
([]
EnvItem
,
len
(
list
)
-
1
)}
for
i
:=
0
;
i
<
len
(
list
)
-
1
;
i
++
{
unlnk
:=
list
[
i
][
:
len
(
list
[
i
])
-
5
]
m
.
items
[
i
]
=
EnvItem
{
unlnk
}
}
return
m
}
func
(
m
*
EnvModel
)
ItemCount
()
int
{
return
len
(
m
.
items
)
}
func
(
m
*
EnvModel
)
Value
(
index
int
)
interface
{}
{
return
m
.
items
[
index
]
.
name
}
\ No newline at end of file
users/users.go
View file @
0a7cbf9e
...
...
@@ -10,7 +10,7 @@ func userInit() string{
pub
.
Reg_Exist_item
(
pub
.
HKCU
,
pub
.
Reg_Path_home
)
//
初始化 图标文件
//
获取 图标文件 路径
var
icoDir
=
[]
string
{
`AD-Control.ico`
,
`C:\windows\system32\AD-Control.ico`
,
...
...
@@ -27,7 +27,6 @@ func userInit() string{
func
menuInit
(
ni
*
walk
.
NotifyIcon
){
menuInitPower
(
ni
)
menuInitSoftwareInstall
(
ni
)
menuInitWxDriveSync
(
ni
)
menuInitTools
(
ni
)
menuInitFileShares
(
ni
)
menuInitMyShares
(
ni
)
...
...
@@ -35,21 +34,22 @@ func menuInit(ni * walk.NotifyIcon){
}
func
main
()
{
// 用户初始化
// 用户
初始化
icodir
:=
userInit
()
// 程序初始化
// 程序
初始化
mw
,
err
:=
walk
.
NewMainWindow
()
if
err
!=
nil
{
pub
.
PntError
(
err
)
}
// 图标资源 初始化
icon
,
err
:=
walk
.
Resources
.
Icon
(
icodir
)
if
err
!=
nil
{
pub
.
PntError
(
err
)
}
// 后台图标应用初始化
// 后台图标应用
初始化
ni
,
err
:=
walk
.
NewNotifyIcon
(
mw
)
if
err
!=
nil
{
pub
.
PntError
(
err
)
...
...
@@ -65,12 +65,6 @@ func main() {
}
menuInit
(
ni
)
// 为了防止ADServer的Daemon.exem没有运行而导致
// 域计算机运行users.exe失败,
// 需要取消由users.exe向ADServer报告
// 交给组策略中adct.exe进行报告
// pub.SendServerReport(pub.Msg_Report_UserStart)
// The notify icon is hidden initially, so we have to make it visible.
if
err
:=
ni
.
SetVisible
(
true
);
err
!=
nil
{
pub
.
PntError
(
err
)
...
...
wxwork/wxwork.go
View file @
0a7cbf9e
...
...
@@ -125,9 +125,11 @@ func wxMsgDeal(name, userid,text * string ) string{
pub
.
SendWxworkTextToAUser
(
*
userid
,
"收到,正在处理~"
)
result
,
err
=
pub
.
SendServer
(
pub
.
GJwxworkText
(
name
,
userid
,
text
,
pub
.
Msg_Wxwork_UserWake
))
case
""
:
return
""
//
default
:
pub
.
SendWxworkTextToAUser
(
*
userid
,
"emmmmmmmmm"
)
pub
.
SendWxworkTextToAUser
(
*
userid
,
*
text
)
return
""
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment