首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理作为管理员运行--所有用户

批处理作为管理员运行--所有用户
EN

Stack Overflow用户
提问于 2018-06-05 12:43:50
回答 1查看 250关注 0票数 0

我正在处理一个无人值守的SQL 2008、2012和2014的自动安装,到目前为止,它正在使用我的批处理命令。我遇到的一个问题是,为了在Windows 10上正确地使用每个程序中的核心函数(management ),它需要作为管理员运行。

在Windows 10中,可以手动打开程序快捷方式的文件位置-右键单击-属性-“兼容性”选项卡-“更改所有用户的设置”-选中“以管理员身份运行此程序”框。有没有办法让一个批处理命令选中那个复选框?这样,工作人员就不需要每次都以管理员的身份手动运行它了,它只是自动地以管理员的身份打开Management。

下面可以找到我的批处理命令来自动安装。开始查找安装文件,将sa密码设置为任何我想要的,并从configurationfile.ini文件中提取installation的自定义设置。我需要“运行作为一个管理”的所有用户运行后,这一切。

代码语言:javascript
复制
start "" "%~dp0SQL2008\setup.exe" /SAPWD="XXXXXXXX" /ConfigurationFile="ConfigurationFile.ini" /quiet
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 16:19:53

代码语言:javascript
复制
@echo off
setlocal

call :reg_compat "C:\User\Test\test.exe" "WINXPSP3 RUNASADMIN"
if errorlevel 1 echo Registry write failed.

exit /b

:reg_compat  fullpath, reg_data
setlocal
set "reg_key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
set "reg_data="

:: Get current registry data.
for /f "tokens=1,2*" %%A in ('2^>nul reg query "%reg_key%" /v "%~1"') do (
    if /i "%%~A" == "%~1" set "reg_data=%%~C"
)

:: Write new entry and exit.
if not defined reg_data (
    >nul reg add "%reg_key%" /v "%~1" /d "%~2" /f
    if errorlevel 1 exit /b 1
    exit /b 0
)

:: Copy original registry data.
set "reg_data_original=%reg_data%"

:: Append new data if not in original registry data.
for %%A in (%~2) do (
    set "value_exist="

    for %%B in (%reg_data_original%) do (
        if "%%~A" == "%%~B" set "value_exist=1"
    )

    if not defined value_exist (
        call set "reg_data=%%reg_data%% %%~A"
    )
)

:: Continue only if registry data is modified.
if "%reg_data_original%" == "%reg_data%" exit /b 0

:: Write modified entry and exit.
>nul reg add "%reg_key%" /v "%~1" /d "%reg_data%" /f
if errorlevel 1 exit /b 2
exit /b 0

代码被设置为编写测试条目。测试条目将添加Windows SP3并作为该文件路径的管理兼容性运行。

对于实际使用,更改参数以调用标签:reg_compat,文件的完整路径作为第一个参数,reg_data兼容性参数作为第二个参数。兼容性参数是大写的,用空格分隔。

标签:reg_compat将通过添加新的兼容性参数来编写新条目或更新条目。如果errorlevel失败,则调用标签中的reg add设置为0。

如果您只需要这样的代码,那么可以使用最少的代码:

代码语言:javascript
复制
@echo off
setlocal

set "reg_key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
reg add "%reg_key%" /v "C:\User\Test\test.exe" /d "WINXPSP3 RUNASADMIN" /f
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50700389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档