如何授权域用户安装指定的软件?

  • Post author:
  • Post category:其他

公司几百台计算机都假如了域,很多软件需允许domain/user身份不能通过域控来分发,我做了这样一个程序解决了此问题.

程序里面的具体步骤如下:

1、获取计算机名;

2、预设具有软件安装权限的域用户名和密码;

3、创建进程执行批处理命令行,以管理员身份安装软件。

4、结束进程。

 

[Win32汇编语言]版本代码:

;获取计算机名,预设具有软件安装权限的域用户名和密码,创建进程执行批处理命令行,以管理员身份安装软件。
.386
.model flat, stdcall
option casemap :none
; Include 文件定义
include  windows.inc
include  user32.inc
includelib user32.lib
include  kernel32.inc
includelib kernel32.lib
include  comdlg32.inc
includelib comdlg32.lib
; Equ 等值定义
ICO_MAIN equ 1000
DLG_MAIN equ 1000
IDC_FILE equ  1001
IDC_CMDLINE equ  1002
IDC_BROWSE equ  1003
; 数据段
.data?
hInstance dd ?
hWinMain dd ?
stStartUp STARTUPINFO  <?>
stProcInfo PROCESS_INFORMATION <?>
dwSize  db ?

.data
MsgBoxCaption db “计算机名”,0
szComputerName db 16 dup(0)
szBuffer db 255 dup(0)

.const
szErrExec db ‘无法执行文件!’,0
bat1  db ‘//192.168.2.3/公司所有统一常用安装软件/psexec.exe //’,0
bat2  db ‘ -u domain/Administrator -p password -d //192.168.1.2/公司所有统一常用安装软件/工具软件/管理系统.exe’,0
; 代码段
.code
start:
 mov dwSize,sizeof szComputerName
 invoke GetComputerName,addr szComputerName,addr dwSize
; invoke MessageBox, NULL, addr szComputerName, addr MsgBoxCaption, MB_OK

 invoke lstrcat,addr szBuffer,addr bat1
 invoke lstrcat,addr szBuffer,addr szComputerName
 invoke lstrcat,addr szBuffer,addr bat2

 invoke GetModuleHandle,NULL
 mov hInstance,eax
 ; 创建进程
 invoke GetStartupInfo,addr stStartUp
 invoke CreateProcess,NULL,addr szBuffer,NULL,NULL,NULL,/
  NORMAL_PRIORITY_CLASS,NULL,NULL,addr stStartUp,addr stProcInfo
 .if eax
 ; 等待进程结束
 invoke WaitForSingleObject,stProcInfo.hProcess,INFINITE
 invoke CloseHandle,stProcInfo.hProcess
 invoke CloseHandle,stProcInfo.hThread
 .else
 invoke MessageBox,hWinMain,addr szErrExec,NULL,MB_OK or MB_ICONWARNING
 .endif
 invoke ExitProcess,NULL
end start

 

 

[C#.NET]版本代码

 

使用C#.net编程制作Install.exe,用于公司所有统一安装软件权限下放,使域内的计算机用户有权限安装指定的软件。

小程序解决大问题,爽!

软件源代码如下:

(注:账户和密码等机密信息已用******代替)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Net;
using System.Management;

namespace Install
{
    class Program
    {
        static void Main(string[] args)
        {
            //获取本机计算机名
            string hostname = Dns.GetHostName();
            //在需要安装软件的时候,赋予maiyagroup/install账户安装软件的权限。
            System.Diagnostics.Process.Start(@”//192.168.2.3/公司所有统一常用安装软件/psexec”, @”//”+hostname+ @” -u domain/****** -p ****** -d //192.168.2.3/公司所有统一常用安装软件/MSN2009.exe”);
            //命令:@”//192.168.2.3/公司所有统一常用安装软件/psexec”
            //参数1:@”//”+hostname
            //参数2:@” -u ****** -p ****** -d //192.168.2.3/公司所有统一常用安装软件/MSN2009.exe”
        }
    }
}


版权声明:本文为zhoubifa原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。