Foxtable(狐表)用户栏目专家坐堂 → 怎么实现在项目启动的时候就默认用管理员身份运行呢?


  共有3521人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
怎么实现在项目启动的时候就默认用管理员身份运行呢?  发帖心情 Post By: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()

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/5 9:24:00 [只看该作者]

foxtable项目?在Windows的桌面上右击Foxtable的快捷方式,在快捷菜单中的单击属性命令,然后在兼容性页面中勾选“以管理员身份运行此程序”

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

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)foxtable项目?在Windows的桌面上右击...  发帖心情 Post By:2020/11/5 9:36:00 [只看该作者]

有没有代码可以直接在运行项目时 就默认管理员启动呢?
前提是不在运行之前手动进行设置管理员权限启动项目

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/5 9:50:00 [只看该作者]

这是一个悖论。以管理员启动,就是启动前就是管理员身份。既然都启动了,再设置管理员就没有意义了。

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

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)这是一个悖论。以管理员启动,就是启...  发帖心情 Post By: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运行时的窗口
第二个  红色部分相对路劲 怎么修改为项目文件动态路劲呢?也就是不管这个文件我放在任何目录下 都可以用这个批处理文件一键运行项目



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)1、Dim Proc As New Process '定义一...  发帖心情 Post By:2020/11/5 13:13:00 [只看该作者]

有点蓝老师  再麻烦你一下   我把如下代码加入了项目启动前的事件里面   
项目会不断重启  重新再次打开项目文件   有没有办法将如下代码做一下修正  让项目启动时,只运行一次,运行一次之后 就不再运行了    下载重新打开项目时也依旧只运行一次


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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/5 13:48:00 [只看该作者]

原因看4楼。

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


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)原因看4楼。不用写代码执行了,把bat...  发帖心情 Post By:2020/11/5 13:56:00 [只看该作者]

有点蓝 老师  
直接双击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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/5 14:01:00 [只看该作者]

使用专业的打包软件打包程序,如:http://www.foxtable.com/webhelp/topics/2207.htm,然后在安装包里设置以管理员运行程序

 回到顶部
总数 18 1 2 下一页