运行 C 程序第一次作为管理员
Run C program as admin first time
我制作了一个程序,它必须 运行 作为管理员才能创建一个注册表项。在我的程序创建注册表项后,我在注册表中创建了另一个项 运行 我的程序在启动时,我不需要管理员权限。所以我更改了项目属性,以便如果用户想要 运行 我的程序 he/she 必须 运行 它作为管理员。创建我的第一个密钥(我需要管理员权限)后,我使用注册表将我的程序添加到启动项。
问题是我们无法运行具有管理员权限的程序启动。第一次执行后我什至不需要管理员权限,因为创建了必要的密钥。
我的问题:如何让我的程序在第一次执行时只请求管理员权限?
在内存中有同一个程序的两个进程,也许让它们通过管道进行通信。用户在没有提升权限的情况下正常启动程序。一旦需要提升,您就可以使用 ShellExecuteEx
和动词“runas”启动相同的程序。这个“runas”动词会导致 UAC 提示。
如果在原始进程的整个过程中只需要提升一次权限,那么您可以将一些参数传递给提升的进程,然后就可以完成了。但是,如果您需要提升的进程在不同的时间执行多个操作,那么您必须在两个进程之间打开一个管道,以将数据发送到提升的进程。这样,您只有一次 UAC 提示,但可以在需要时随时执行需要提升的操作。
我制作了一个程序,它必须 运行 作为管理员才能创建一个注册表项。在我的程序创建注册表项后,我在注册表中创建了另一个项 运行 我的程序在启动时,我不需要管理员权限。所以我更改了项目属性,以便如果用户想要 运行 我的程序 he/she 必须 运行 它作为管理员。创建我的第一个密钥(我需要管理员权限)后,我使用注册表将我的程序添加到启动项。
问题是我们无法运行具有管理员权限的程序启动。第一次执行后我什至不需要管理员权限,因为创建了必要的密钥。
我的问题:如何让我的程序在第一次执行时只请求管理员权限?
在内存中有同一个程序的两个进程,也许让它们通过管道进行通信。用户在没有提升权限的情况下正常启动程序。一旦需要提升,您就可以使用 ShellExecuteEx
和动词“runas”启动相同的程序。这个“runas”动词会导致 UAC 提示。
如果在原始进程的整个过程中只需要提升一次权限,那么您可以将一些参数传递给提升的进程,然后就可以完成了。但是,如果您需要提升的进程在不同的时间执行多个操作,那么您必须在两个进程之间打开一个管道,以将数据发送到提升的进程。这样,您只有一次 UAC 提示,但可以在需要时随时执行需要提升的操作。