域账户设置后 公司桌面图标被限制 如何修改?

发布时间 2023-06-12 15:40:24作者: 一颗苹果!!
package main

import (
  "fmt"
  "os"
  "syscall"
  "unsafe"
)

const (
  SPI_SETDESKWALLPAPER = 0x0014
  SPIF_UPDATEINIFILE   = 0x0001
  SPIF_SENDCHANGE      = 0x0002
)

func main() {
  // 获取指定的图片文件路径
  //args := os.Args[1:]
  //if len(args) != 1 {
  //  fmt.Println("请提供一个图片文件路径")
  //  return
  //}
  file := "D:\\Downloads\\S21\\test2.jpeg"

  // 检查文件是否存在
  if _, err := os.Stat(file); err != nil {
    fmt.Println("文件不存在或不可访问")
    return
  }

  // 加载user32.dll库
  user32 := syscall.MustLoadDLL("user32.dll")

  // 查找SystemParametersInfoW函数
  systemParametersInfo := user32.MustFindProc("SystemParametersInfoW")

  // 调用函数,更改壁纸
  ret, _, err := systemParametersInfo.Call(
    SPI_SETDESKWALLPAPER,
    0,
    uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(file))),
    SPIF_UPDATEINIFILE|SPIF_SENDCHANGE,
  )
  if ret == 0 {
    fmt.Println("更改壁纸失败:", err)
    return
  }

  fmt.Println("更改壁纸成功")
}

或者:
package main

import (
  "fmt"
  "syscall"
  "unsafe"
)

const (
  SpiSetdeskwallpaper   = 20
  SpifUpdateinifile     = 0x01
  SPIF_SENDWININICHANGE = 0x02
)

func main() {
  path := "D:\\Downloads\\S21\\test2.jpeg"
  ret := SystemParametersInfo(SpiSetdeskwallpaper, 0,
    uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(path))),
    SpifUpdateinifile|SPIF_SENDWININICHANGE)
  if ret == 0 {
    fmt.Println("Failed to set wallpaper")
  } else {
    fmt.Println("Wallpaper set successfully")
  }
}

func SystemParametersInfo(uiAction, uiParam uint32, pvParam uintptr, fWinIni uint32) int32 {
  var user32 = syscall.NewLazyDLL("user32.dll")
  var proc = user32.NewProc("SystemParametersInfoW")
  ret, _, _ := proc.Call(
    uintptr(uiAction),
    uintptr(uiParam),
    uintptr(pvParam),
    uintptr(fWinIni),
  )
  return int32(ret)
}

然后打包生成exe文件
GOOS=windows GOARCH=amd64 go build -o your-app-name.exe