# AD-Control-Golang
# 程序简介
本程序是从[AD-Control](http://git.zhiweidata.top/taotengfei/AD-Control)升级而来,并融合了在AD上经常使用的工具.

# 概念

1. **AD,ADServer**是主控
2. **DC,Domain Computer**是域计算机
3. **ADD,ADServer Daemon**是AD上的Daemon.exe守护进程
4. **DCD,Domain Computer Daemon**是DC上的Daemon.exe守护进程
5. **ADU,ADServer User**是AD上的Daemon.exe用户进程
6. **DCU,Domain Computer User**是DC上的Users.exe用户进程

# 程序作用简要

## DCU - Domain Computer User
UI:在DC上以**用户权限**且**任务栏托盘**的方式运行
启动说明：由组策略的文件替换功能，从文件共享中复制到C:\Windows\System32下，并运行

具体功能:
1. 电源选项
2. 软件安装
3. 微盘同步
4. 文件共享

## DCD - Domain Computer Daemon
运行方式:由组策略在计算机启动时运行命令`runad.bat daemon`来进行循环启动DCD。（**管理员权限、无窗口** ）
主要功能运行由DCU和ADU提交的程序和与接受处理发送消息（通常处理需要管理员权限的消息）

## ADD - ADServer Daemon
运行方式:前后台任意
主要作用:根据ADU的参数设定响应来自DC端的请求
其他：使用注册表（HKLM\Software\ADControl）作为数据库的存储

## ADU - ADServer User（未完成）
运行方式: 命令行参数形式
主要作用:设定请求返回的结果

# 其他说明
用到了github.com/lxn/walk,但是修改了部分代码
1.在notifyicon.go的notifyIconWndProc()中`if showmenu = !showmenu;!showmenu { return } `和`var showmenu bool = false `。来解决托盘菜单中按钮点击一次，会跳出2次的问题
2.解决icon文件没有使用指定的绝对路径问题

在func (rm *ResourceManager) Icon(name string) (*Icon, error) {
下
更新
if icon, err := NewIconFromFile(filepath.Join(rm.rootDirPath, name)); err == nil {
为
if icon, err := NewIconFromFile(name); err == nil {


# 现有问题
1. ADU未完成
2. SlaveAD辅控应启动Daemon,作为备用响应请求程序
3. 托盘中菜单按钮不能实时修改