有些注册表项是由系统拥有的,除非我作为系统运行,否则我无法编辑它们。我希望能够从我的VB应用程序中编辑这些键。我发现的任何教程都建议使用PSTools (现在不再推荐的At命令)或schtasks。PSTools看起来很棒,但它的许可似乎限制了(关于重新分发)。At和messy任务太混乱,需要调度延迟。
这与我先前的问题有关。我想得到我发现的,并通过VB实现它。
Modify audit policy (group policy)
我也发现了这个,但是我发现了一个错误1314。我意识到,尽管运行VS2010 "requireAdministrator",甚至以管理员身份运行EXE,它仍然在任务管理器中显示我的用户名(以我的身份运行,而不是以管理员的身份运行)。我以管理员身份登录,却得到了错误5。即使按照这篇文章(CreateProcessAsUser error 1314)的建议,在确保我有权限设置之后,它仍然给了我错误5。
我将示例更改为"TokenAccessLevels.Read和复制“,而不是MaximumAllowed。
If Not DuplicateTokenEx(hToken.DangerousGetHandle,
TokenAccessLevels.Read & TokenAccessLevels.Duplicate,
Nothing,
SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation,
TOKEN_TYPE.TokenPrimary,
phNewToken) Then我从CreateProcessAsUser得到了错误5。这是在以管理员身份运行VS2010时发生的。
发布于 2015-12-31 22:43:02
topic16714.html
这篇文章是我能做的最好的了。基本上,安装一个服务,运行它,然后删除它。根据行动纲领,这是他的解释。
那么它是如何工作的呢?
要细分它:创建服务- sc创建-- binPath= "cmd /c start calc“type=自有的type=交互启动服务网络启动-(这也可以通过: sc启动-)删除服务sc删除--
变量:
cmd /c -允许我们将参数传递给cmd (如果没有这个初始部分,如果您在cmd.exe中复制和粘贴,而不是在运行对话框中,它将工作。因此修正了它) sc创建binPath= --因为cmd.exe不响应服务命令,所以当SCM在binPath (Reg = ImagePath)中运行应用程序时,它将终止它,当没有及时响应时,因此不能使用cmd.exe。它必须调用其他的东西--在本例中是calc.exe、sc、create、type= --这个花了一段时间才弄清楚。初始问题是启动cmd.exe的窗口站(它的子进程被calc.exe继承)。幸运的是,在阅读了Mark的Windows e4之后,我能够通过将服务指定为交互式来解决这个问题。(实验中,它实际上必须是交互的(256)和自己的(16)(256\16= 272)。基本上,这允许窗口在\WinSta0 0\Default(当前用户的桌面,允许窗口显示)中运行。在对sc不接受type =进行了一些研究之后,我发现它允许我们再次指定它,而不是按位覆盖Type (dword) -OR(添加它)。问题解决了!net启动服务(可能调用StartService) cmd.exe运行在start File的命令行(CL)中,其中start可能调用ShellExecute ( MS不允许start指定SW_*命令(如hide)。虽然它确实允许我们最小化/最大限度的窗口。cmd.exe打开应用程序/文件,SCM由于没有及时响应其命令而终止cmd.exe,该窗口现在显示给用户。sc删除-最后,我们通过删除服务来清理路径。
对我来说这起作用了。
cmd /c sc create -- binPath= "cmd /c start app.exe" type= own type= interact & net start -- & sc delete --现在,我很难找到绝对的工作途径。我必须将我的.EXE放在System32和SysWOW64中,所以我不必使用绝对路径。根据该网站,这应该是允许绝对路径工作。
cmd /c sc create -- binPath= "cmd /c start \"\" \"C:\windows\regedit.exe\" " type= own type= interact & net start -- & sc delete --它从来没有对我起作用,因为它会挂一段时间,也不会启动这个应用程序。它应该马上就能完成。
https://stackoverflow.com/questions/34550685
复制相似问题