我需要运行一个需要注册DLL的批处理文件.DLL注册失败,因为批处理文件未以"管理员"身份启动命令提示符.
有没有办法通过批处理文件以管理员身份启动" 命令提示符 " .
环境:Win7/Vista
我的软件突然出现了一个令人讨厌的问题.我正在制作一个与另一个现有软件(游戏)交互的程序.用户报告说他以管理员权限运行游戏,在这种情况下,我的程序停止为他工作.
简短的调查显示,有些人确实需要在管理员帐户下运行游戏,有些则不需要.如果我的程序能够检测到这一点并且警告用户游戏是否在管理员帐户下运行,那将是很棒的:

如果用户单击"Elevate",我想要求windows提升java.exe运行我的jar文件并调用典型的UAC对话框.

显然,这次问题不是关于java更新程序而是JRE
我的问题是:这可能吗?Windows可以提升我java.exe实例的权限吗?java有办法吗?或者我可以使用命令行命令吗?
我想避免重新启动程序(尽管它可能不是那么重要).
编辑:
如果您查看注释,您将看到无法避免重新启动应用程序 - 进程只能启动升级而不会升高.不幸的是,这有点改变了这个问题.基本上,现在听起来更像是:" 如何使用管理员权限重新启动我的应用程序? ".当然,除非有两个java.exe共享一个罐子的技巧......
在此命令中:
FOR /F %%A IN ('TYPE "%InFile%"^|find /v /c ""')DO SET "Till=%%A"
Run Code Online (Sandbox Code Playgroud)
什么^意思?
我正在编写客户端/服务器检查程序,但它需要以管理员身份运行.
我希望这在我的网络和用户上静默运行,我不希望"运行为"管理员"提示.是否有任何开始代码可以放入批处理文件,使其以管理员身份自动运行?
在 Windows 下工作时,我可以打开任意数量的 MATLAB 实例(以及其他 Windows 应用程序的实例)。
用PyCharm可以完成吗?
我暂时无法打开多个。
批处理文件中的特殊字符很难,但是我没有找到正确的解决方法来正确地转义这个特定字符串的前两个字符我试图通过该应用程序.
SET pass=^&AntiBatchfileString
A_Program.exe /pass=%pass%
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
:: Escaping the escape twice, first for ^, second for &.
SET pass=^^^^&AntiBatchfileString
echo %pass%
:: Combining escapes.
SET first=^^
SET second=^^&AntiBatchfileString
SET pass=%first%%second%
echo %pass%
:: Preventing expansion
SET first=^^
SET second=^^&AntiBatchfileString
SET pass=!first!%second%
echo %pass%
:: I got this to print correctly
SET "pass=^&AntiBatchfileString"
echo ^^%pass%
Run Code Online (Sandbox Code Playgroud)
仍然在通过最后一个时它不接受登录,我不知道最终输出是什么.这让我想到也许是在将参数传递给应用程序时尝试进行另一次扩展,所以我也引用了它.
SET "pass=^&AntiBatchfileString"
A_Program.exe "/pass=^^%pass%"
Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作,我不确定我现在缺少什么.
我需要设置程序安装程序的交付.
该程序有一个program_installer.exe和一个文件夹,我在创建安装程序时无法在安装程序中包含该文件夹.
因此,当用户需要安装程序时,我通过MAIL向他发送BATCH文件
@echo off
if DEFINED PROGRAMFILES(X86) (
SET TOOL_INSTALL_DIR="%PROGRAMFILES(X86)%\myfolder"
) else (
SET TOOL_INSTALL_DIR="%PROGRAMFILES%\myfolder"
)
MKDIR %TOOL_INSTALL_DIR%
copy /y \\rk0012352\Public\lkh5iwwh.m4s %TOOL_INSTALL_DIR%
START %PROGRAMFILES%\program_installer.exe
Run Code Online (Sandbox Code Playgroud)
问题是,当用户执行BATCH并运行COPY命令时,在Windows 7上该命令将失败,因为他没有ADMIN权限.
如何在XP和7上以管理员身份运行该复制命令?
您可能会说:当用户使用INSTALL.BAT获取EMAIl时,他是否可以单击RUN AS ADMINISTRATOR?
答案不幸的是,他们中的大多数人都不会这样做而只是抱怨它不起作用.此外,许多电子邮件客户端,如Outlook将提示"打开""保存"选择面板,大多数用户将直接单击打开(生成无权限错误)
"运行为"命令需要指定机器的管理员名称,我不知道如何在每台计算机上调用管理员用户.
有什么建议吗?
我意识到你可以使用hat字符在批处理文件中转义&符号
例如
echo a ^& b
a & b
Run Code Online (Sandbox Code Playgroud)
但我正在使用该命令
for /f "tokens=*" %%A IN ('DIR /B /A-D /S .acl') DO ProcessACL.cmd "%%A"
Run Code Online (Sandbox Code Playgroud)
它查找当前目录中名为".acl"的所有文件,或当前目录的子目录.
问题是,我找到包含'&'字符的路径名(不,它们不能重命名),我需要一种方法来自动转义&符号并使用转义路径调用第二个批处理文件参数.
rem ProcessACL.cmd
echo %1
Run Code Online (Sandbox Code Playgroud) 我有一个批处理文件,需要传递一个包含管道和空格的参数.由于空格,在传入参数时需要将双引号附加到参数上.我需要去掉那些双引号并回显参数.通常,使用〜会让我这样做,但我认为我传入的具体参数会导致问题.如果我这样做:
[test1.bat]
call test2.bat "Account|Access Level|Description"
Run Code Online (Sandbox Code Playgroud)
[test2.bat]
echo %1
echo %~1
Run Code Online (Sandbox Code Playgroud)
并运行test1.bat,我得到这个输出:
"Account|Access Level|Description"
'Access' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
那么如何删除双引号并仍然有一个可用的变量?