質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

3916閲覧

AutoHotkeyで、非管理者権限でプログラムを実行する方法

YouCode21

総合スコア13

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/07/01 13:34

編集2017/07/01 13:36

管理者権限で実行中のAutoHotkeyから、非管理者権限でプログラムを起動するコードなのですが、Windowsのアップデートを行ってから、以下のエラーが出るようになってしました。

イメージ説明

原因がさっぱり推測できないのですが、よければ知恵をいただけないでしょうか?
以下が、プログラムです(エラー箇所は、最下部です)

RunAsUser(Target, Arguments, WorkingDirectory) { static TASK_TRIGGER_REGISTRATION := 7 ; trigger on registration. static TASK_ACTION_EXEC := 0 ; specifies an executable action. static TASK_CREATE := 2 static TASK_RUNLEVEL_LUA := 0 static TASK_LOGON_INTERACTIVE_TOKEN := 3 objService := ComObjCreate("Schedule.Service") objService.Connect() objFolder := objService.GetFolder("\") objTaskDefinition := objService.NewTask(0) principal := objTaskDefinition.Principal principal.LogonType := TASK_LOGON_INTERACTIVE_TOKEN ; Set the logon type to TASK_LOGON_PASSWORD principal.RunLevel := TASK_RUNLEVEL_LUA ; Tasks will be run with the least privileges. colTasks := objTaskDefinition.Triggers objTrigger := colTasks.Create(TASK_TRIGGER_REGISTRATION) endTime += 1, Minutes ;end time = 1 minutes from now FormatTime,endTime,%endTime%,yyyy-MM-ddTHH`:mm`:ss objTrigger.EndBoundary := endTime colActions := objTaskDefinition.Actions objAction := colActions.Create(TASK_ACTION_EXEC) objAction.ID := "U1" objAction.Path := Target objAction.Arguments := Arguments objAction.WorkingDirectory := WorkingDirectory ? WorkingDirectory : A_WorkingDir objInfo := objTaskDefinition.RegistrationInfo objInfo.Author := "U1" objInfo.Description := "Runs a program as non-elevated user" objSettings := objTaskDefinition.Settings objSettings.Enabled := True objSettings.Hidden := False objSettings.DeleteExpiredTaskAfter := "PT0S" objSettings.StartWhenAvailable := True objSettings.ExecutionTimeLimit := "PT0S" objSettings.DisallowStartIfOnBatteries := False objSettings.StopIfGoingOnBatteries := False objFolder.RegisterTaskDefinition("", objTaskDefinition, TASK_CREATE , "", "", TASK_LOGON_INTERACTIVE_TOKEN ) }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

このプログラムは、「Shift+0」を利用されていますか?
他のプログラムのショートカットキーと干渉して、時々思わぬトラブルを招くのですが、そのプログラムのショートカットキー(Shift+0)を変更する事なく、トラブル回避する方法はないでしょうか? 

※ちなみに「ptlb+0」の箇所などを、「ptlb+9」や「ptlb+^+0」などに変更してみると、ShellRunのプログラム自体が正常に動かなくなりました。

投稿2024/04/12 06:02

YouCode21

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

以下でできました。

; SHELLRUN ;If the script is not elevated, relaunch as administrator and kill current instance ;if not A_IsAdmin ;{ ; Run *RunAs "%A_ScriptFullPath%" ; ExitApp ;} ;Parameters for ShellRun ;1 application to launch ;2 command line parameters ;3 working directory for the new process ;4 "Verb" (For example, pass "RunAs" to run as administrator) ;5 Suggestion to the application about how to show its window - see the msdn link for possible values ShellRun(prms*) { shellWindows := ComObjCreate("{9BA05972-F6A8-11CF-A442-00A0C90A8F39}") desktop := shellWindows.Item(ComObj(19, 8)) ; VT_UI4, SCW_DESKTOP ; Retrieve top-level browser object. if ptlb := ComObjQuery(desktop , "{4C96BE40-915C-11CF-99D3-00AA004AE837}" ; SID_STopLevelBrowser , "{000214E2-0000-0000-C000-000000000046}") ; IID_IShellBrowser { ; IShellBrowser.QueryActiveShellView -> IShellView if DllCall(NumGet(NumGet(ptlb+0)+15*A_PtrSize), "ptr", ptlb, "ptr*", psv:=0) = 0 { ; Define IID_IDispatch. VarSetCapacity(IID_IDispatch, 16) NumPut(0x46000000000000C0, NumPut(0x20400, IID_IDispatch, "int64"), "int64") ; IShellView.GetItemObject -> IDispatch (object which implements IShellFolderViewDual) DllCall(NumGet(NumGet(psv+0)+15*A_PtrSize), "ptr", psv , "uint", 0, "ptr", &IID_IDispatch, "ptr*", pdisp:=0) ; Get Shell object. shell := ComObj(9,pdisp,1).Application ; IShellDispatch2.ShellExecute shell.ShellExecute(prms*) ObjRelease(psv) } ObjRelease(ptlb) } }

投稿2017/07/01 17:19

YouCode21

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問