mirror of
https://github.com/fanchenio/DawnLauncher.git
synced 2025-07-14 05:12:11 +08:00
修复某些情况下'以管理员身份启动'没有生效的问题、优化'新增/编辑项目'时'以管理员身份运行'显示逻辑。
This commit is contained in:
parent
0c2ae8ae5b
commit
d4520eef0c
@ -327,6 +327,9 @@ function run(
|
|||||||
item: Item
|
item: Item
|
||||||
) {
|
) {
|
||||||
if (item.data) {
|
if (item.data) {
|
||||||
|
if (operation === "open" && item.data.runAsAdmin) {
|
||||||
|
operation = "runas";
|
||||||
|
}
|
||||||
// 更新打开信息
|
// 更新打开信息
|
||||||
updateOpenInfo(type, item.id);
|
updateOpenInfo(type, item.id);
|
||||||
// 判断类型
|
// 判断类型
|
||||||
|
@ -208,5 +208,5 @@ fn system_item_execute(target: String, params: Option<String>) {
|
|||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
#[napi]
|
#[napi]
|
||||||
fn has_runas(path: String) -> bool {
|
fn has_runas(path: String) -> bool {
|
||||||
windows::has_runas(&path)
|
windows::has_runas(path)
|
||||||
}
|
}
|
||||||
|
@ -722,6 +722,13 @@ pub fn shell_execute(
|
|||||||
start_location: Option<String>,
|
start_location: Option<String>,
|
||||||
) {
|
) {
|
||||||
thread::spawn(move || {
|
thread::spawn(move || {
|
||||||
|
let mut operation = operation;
|
||||||
|
// 判断是否是runas,如果是的话,需要判断文件是否有以管理员身份运行的权限,如果没有改为open
|
||||||
|
if operation == "runas" {
|
||||||
|
if !has_runas(file.clone()) {
|
||||||
|
operation = String::from("open");
|
||||||
|
}
|
||||||
|
}
|
||||||
// dir
|
// dir
|
||||||
let dir = start_location.unwrap_or_else(|| {
|
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
|
// IShellItem
|
||||||
let path = HSTRING::from(path);
|
let path = HSTRING::from(path);
|
||||||
if let Ok(shell_item) =
|
if let Ok(shell_item) =
|
||||||
|
@ -329,9 +329,7 @@
|
|||||||
v-if="
|
v-if="
|
||||||
selectedMenuId === 0 &&
|
selectedMenuId === 0 &&
|
||||||
form.data.target &&
|
form.data.target &&
|
||||||
form.data.target.trim() !== '' &&
|
form.data.target.trim() !== ''
|
||||||
(getFileExtname(form.data.target) === 'exe' ||
|
|
||||||
getFileExtname(form.data.target) === 'bat')
|
|
||||||
"
|
"
|
||||||
v-model:checked="form.data.runAsAdmin"
|
v-model:checked="form.data.runAsAdmin"
|
||||||
:focusable="false"
|
:focusable="false"
|
||||||
@ -459,7 +457,6 @@ import {
|
|||||||
isAbsolutePath,
|
isAbsolutePath,
|
||||||
deleteExtname,
|
deleteExtname,
|
||||||
getFileName,
|
getFileName,
|
||||||
getFileExtname,
|
|
||||||
} from "../../../commons/utils/common";
|
} from "../../../commons/utils/common";
|
||||||
import SystemItemList from "./components/SystemItemList.vue";
|
import SystemItemList from "./components/SystemItemList.vue";
|
||||||
import StartMenuItemList from "./components/StartMenuItemList.vue";
|
import StartMenuItemList from "./components/StartMenuItemList.vue";
|
||||||
@ -656,12 +653,6 @@ async function confirm() {
|
|||||||
if (!success) {
|
if (!success) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 后缀
|
|
||||||
let ext = getFileExtname(form.data.target);
|
|
||||||
// 如果选中按管理员运行,但是文件类型不是exe和bat就修改为false
|
|
||||||
if (form.data.runAsAdmin && (!ext || (ext !== "exe" && ext !== "bat"))) {
|
|
||||||
form.data.runAsAdmin = false;
|
|
||||||
}
|
|
||||||
if (!id) {
|
if (!id) {
|
||||||
// 添加
|
// 添加
|
||||||
await addItem();
|
await addItem();
|
||||||
|
@ -240,9 +240,9 @@ function runItem(e: any, dbclick: boolean) {
|
|||||||
let item = getItemById(itemId);
|
let item = getItemById(itemId);
|
||||||
if (item && item.data) {
|
if (item && item.data) {
|
||||||
if (dbclick && store.setting.item.doubleClickOpen) {
|
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) {
|
} else if (!dbclick && !store.setting.item.doubleClickOpen) {
|
||||||
run("main", item.data.runAsAdmin ? "runas" : "open", item);
|
run("main", "open", item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user