修复某些情况下'以管理员身份启动'没有生效的问题、优化'新增/编辑项目'时'以管理员身份运行'显示逻辑。

This commit is contained in:
unknown 2025-01-01 11:48:09 +08:00
parent 0c2ae8ae5b
commit d4520eef0c
5 changed files with 15 additions and 14 deletions

View File

@ -327,6 +327,9 @@ function run(
item: Item
) {
if (item.data) {
if (operation === "open" && item.data.runAsAdmin) {
operation = "runas";
}
// 更新打开信息
updateOpenInfo(type, item.id);
// 判断类型

View File

@ -208,5 +208,5 @@ fn system_item_execute(target: String, params: Option<String>) {
#[allow(dead_code)]
#[napi]
fn has_runas(path: String) -> bool {
windows::has_runas(&path)
windows::has_runas(path)
}

View File

@ -722,6 +722,13 @@ pub fn shell_execute(
start_location: Option<String>,
) {
thread::spawn(move || {
let mut operation = operation;
// 判断是否是runas如果是的话需要判断文件是否有以管理员身份运行的权限如果没有改为open
if operation == "runas" {
if !has_runas(file.clone()) {
operation = String::from("open");
}
}
// dir
let dir = start_location.unwrap_or_else(|| {
// 判断是否是文件夹
@ -793,7 +800,7 @@ pub fn system_item_execute(target: &str, params: Option<&str>) {
/**
*
*/
pub fn has_runas(path: &str) -> bool {
pub fn has_runas(path: String) -> bool {
// IShellItem
let path = HSTRING::from(path);
if let Ok(shell_item) =

View File

@ -329,9 +329,7 @@
v-if="
selectedMenuId === 0 &&
form.data.target &&
form.data.target.trim() !== '' &&
(getFileExtname(form.data.target) === 'exe' ||
getFileExtname(form.data.target) === 'bat')
form.data.target.trim() !== ''
"
v-model:checked="form.data.runAsAdmin"
:focusable="false"
@ -459,7 +457,6 @@ import {
isAbsolutePath,
deleteExtname,
getFileName,
getFileExtname,
} from "../../../commons/utils/common";
import SystemItemList from "./components/SystemItemList.vue";
import StartMenuItemList from "./components/StartMenuItemList.vue";
@ -656,12 +653,6 @@ async function confirm() {
if (!success) {
return;
}
//
let ext = getFileExtname(form.data.target);
// exebatfalse
if (form.data.runAsAdmin && (!ext || (ext !== "exe" && ext !== "bat"))) {
form.data.runAsAdmin = false;
}
if (!id) {
//
await addItem();

View File

@ -240,9 +240,9 @@ function runItem(e: any, dbclick: boolean) {
let item = getItemById(itemId);
if (item && item.data) {
if (dbclick && store.setting.item.doubleClickOpen) {
run("main", item.data.runAsAdmin ? "runas" : "open", item);
run("main", "open", item);
} else if (!dbclick && !store.setting.item.doubleClickOpen) {
run("main", item.data.runAsAdmin ? "runas" : "open", item);
run("main", "open", item);
}
}
}