以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎么实现在项目启动的时候就默认用管理员身份运行呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=158012)

--  作者:李孝春
--  发布时间:2020/11/5 9:23:00
--  怎么实现在项目启动的时候就默认用管理员身份运行呢?
论坛有点蓝老师  提供了一个打开完毕程序,以管理员身份运行  
代码如下:
Dim p As new Process()
p.StartInfo.FileName = "c:\\xxx.bat"
p.StartInfo.Verb = "runas"
p.StartInfo.WorkingDirectory = "c:\\"
p.Start()

怎么实现在项目启动的时候就默认用管理员身份运行呢?

--  作者:有点蓝
--  发布时间:2020/11/5 9:24:00
--  
foxtable项目?在Windows的桌面上右击Foxtable的快捷方式,在快捷菜单中的单击属性命令,然后在兼容性页面中勾选“以管理员身份运行此程序”

如果是发布后的项目,设置”可执行文件.exe“
[此贴子已经被作者于2020/11/5 9:25:02编辑过]

--  作者:李孝春
--  发布时间:2020/11/5 9:36:00
--  回复:(有点蓝)foxtable项目?在Windows的桌面上右击...
有没有代码可以直接在运行项目时 就默认管理员启动呢?
前提是不在运行之前手动进行设置管理员权限启动项目

--  作者:有点蓝
--  发布时间:2020/11/5 9:50:00
--  
这是一个悖论。以管理员启动,就是启动前就是管理员身份。既然都启动了,再设置管理员就没有意义了。

就好比想先上飞机再买票一样,是不可行的,因果倒置了!

--  作者:李孝春
--  发布时间:2020/11/5 10:26:00
--  回复:(有点蓝)这是一个悖论。以管理员启动,就是启...
有点蓝老师  主要是解决有时候忘记手动设置管理员权限运行的情况  项目发布后 不是每个用户都会注意这个细节



经过测试 将一下代码写入文件并另存为bat文件,以此启动项目,可以不用手动添加管理员权限即可运行狐表项目中的office相关、打开外部文件相关需要管理员权限运行的操作

@echo off
setlocal EnableDelayedExpansion
color 3e
title 添加服务配置
 
PUSHD %~DP0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
:runas

start C:\\Users\\jcy\\Documents\\Foxtable项目\\公文助手20201104\\Publish\\公文助手.exe

下面有两个问题
第一个  怎么确保这个bat静默运行,不需要显示bat运行时的窗口
第二个  红色部分相对路劲 怎么修改为项目文件动态路劲呢?也就是不管这个文件我放在任何目录下 都可以用这个批处理文件一键运行项目



--  作者:有点蓝
--  发布时间:2020/11/5 10:35:00
--  
1、
Dim Proc As New Process \'定义一个新的Process
Dim batPath As String  = projectpath & "xxx.bat" \'指定要打开的bat文件
Proc.StartInfo.WorkingDirectory = FileSys.GetParentPath(batPath)
Proc.StartInfo.FileName = batPath
Proc.StartInfo.CreateNoWindow = False
Proc.Start()

bat文件添加到发布窗口附件中
start ..\\公文助手.exe

--  作者:李孝春
--  发布时间:2020/11/5 13:13:00
--  回复:(有点蓝)1、Dim Proc As New Process '定义一...
有点蓝老师  再麻烦你一下   我把如下代码加入了项目启动前的事件里面   
项目会不断重启  重新再次打开项目文件   有没有办法将如下代码做一下修正  让项目启动时,只运行一次,运行一次之后 就不再运行了    下载重新打开项目时也依旧只运行一次


If FileSys.FileExists(projectpath & "112.bat") Then \'如果指定的文件存在
    Dim Proc As New Process \'定义一个新的Process
    Dim batPath As String  = projectpath & "112.bat" \'指定要打开的bat文件
    Proc.StartInfo.WorkingDirectory = FileSys.GetParentPath(batPath)
    Proc.StartInfo.FileName = batPath
    Proc.StartInfo.CreateNoWindow = False
    Proc.Start()
Else
    FileSys.CopyFile(projectpath & "11.bat", projectpath & "112.bat",True)  
    Dim Proc As New Process \'定义一个新的Process
    Dim batPath As String  = projectpath & "112.bat" \'指定要打开的bat文件
    Proc.StartInfo.WorkingDirectory = FileSys.GetParentPath(batPath)
    Proc.StartInfo.FileName = batPath
    Proc.StartInfo.CreateNoWindow = False
    Proc.Start()
End If

--  作者:有点蓝
--  发布时间:2020/11/5 13:48:00
--  
原因看4楼。

不用写代码执行了,把bat文件作为程序的启动文件,直接执行bat文件


--  作者:李孝春
--  发布时间:2020/11/5 13:56:00
--  回复:(有点蓝)原因看4楼。不用写代码执行了,把bat...
有点蓝 老师  
直接双击bat文件 运行  对吧

直接点击是可以启动并且以超级管理员权限运行的

直接双击bat文件有些不友好  还麻烦老师看看有没有更加友好的方式进行操作呢?

Dim Proc As New Process \'定义一个新的Process
Dim batPath As String  = projectpath & "112.bat" \'指定要打开的bat文件
Proc.StartInfo.WorkingDirectory = FileSys.GetParentPath(batPath)
Proc.StartInfo.FileName = batPath
Proc.StartInfo.CreateNoWindow = False
Proc.Start()
这样的代码如果放在项目启动前事件代码里 会一直重复启动项目   就想只实现一次启动  启动成功了就不要再启动了
[此贴子已经被作者于2020/11/5 14:00:43编辑过]

--  作者:有点蓝
--  发布时间:2020/11/5 14:01:00
--  
使用专业的打包软件打包程序,如:http://www.foxtable.com/webhelp/topics/2207.htm,然后在安装包里设置以管理员运行程序