有偿求实现一个目的,只看重结果,过程不重要,再不刑的前提下,目的就是 阻止管理员 运行 游戏程序,同时运行我自己的bat。
各路神仙,各显神通,有没有哪位神仙,既不刑,也行的。需要todesk远程,能远程看流程的 来报价
游戏文件名 为 yx.exe(举例子)
bat文件名 为 laibin.bat(举例子)
当我双击yx.exe时,此时是管理员即将运行 yx.exe(举例子)
此时众神仙展现神通,阻止 管理员运行 yx.exe 同时运行laibin.bat
如果写一个程序的话,要求程序,运行以后自动后台隐藏运行,有没有神仙来报价
批处理启动
援引讯飞星火:
这个需求可以通过Windows的注册表和任务管理器来实现。首先,我们需要创建一个批处理文件(.bat),该文件会以其他用户的身份运行游戏.exe。然后,我们需要在XX.exe中注册一个消息钩子,当游戏.exe启动时,XX.exe会收到一个消息,然后阻止管理员运行游戏.exe,并以其他用户的身份运行游戏.exe。
以下是具体的步骤:
@echo off
start /wait "C:\path\to\your\game.exe"
请将C:\path\to\your\game.exe
替换为实际的游戏.exe文件路径。
#include <windows.h>
#include <iostream>
HHOOK hHook = NULL;
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
if (nCode >= 0 && wParam == WM_KEYDOWN) {
if (GetAsyncKeyState(VK_CONTROL) & 0x8000) {
HANDLE hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, FALSE, GetCurrentThreadId());
if (hProcess != NULL) {
char path[MAX_PATH];
GetModuleFileName(NULL, path, sizeof(path));
std::string strCmdLine = path;
strCmdLine += " --user \"";
strCmdLine += getenv("USERNAME");
strCmdLine += "\"";
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if (!CreateProcess(NULL, &strCmdLine[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
std::cout << "CreateProcess failed (" << GetLastError() << ").\n";
}
CloseHandle(hProcess);
}
}
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
int main() {
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(hHook);
return 0;
}
使用Visual Studio或其他C++编译器编译hook.dll。
将XX.exe设置为以管理员身份运行。
双击game.bat文件,以其他用户的身份运行游戏.exe。此时,当你尝试以管理员身份运行游戏.exe时,XX.exe会收到一个消息,并阻止你运行游戏.exe,而是以其他用户的身份运行游戏.exe。
【以下回答由 GPT 生成】
对于问题中的需求,以下是一种可能的解决方案:
首先,创建一个名为"游戏.exe"的可执行文件。这个文件可以是任何可执行文件,只需确保它与你想要关联的"XX.exe"程序有一定的关联。
创建一个名为"XX.exe"的程序。通过使用编程语言(如Python、C#等),可以在后台运行程序,并与"游戏.exe"建立关联。以下是使用Python标准库来实现的示例代码:
import os
import subprocess
def run_game_as_guest():
# 使用 os.system 或 subprocess 模块来启动"游戏.exe"并将其作为来宾用户运行
os.system("runas /user:Guest 游戏.exe") # 这是一个示例命令,具体的命令需要根据你的系统和路径进行设置
def main():
# 在这里编写代码,设置"XX.exe"程序在后台运行,并将"游戏.exe"与之关联
run_game_as_guest()
if __name__ == "__main__":
main()
这样,当双击运行"XX.exe"时,它将后台运行,并自动以来宾用户身份运行"游戏.exe"。
要阻止以管理员身份双击运行"游戏.exe",我们可以在"XX.exe"中检测当前用户的身份,并在管理员身份下停止"游戏.exe"。以下是一个基于Python的示例代码:
import os
import ctypes
import sys
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
def run_game_as_guest():
if is_admin():
# 使用以下命令来阻止管理员运行"游戏.exe"
os.system("taskkill /F /IM 游戏.exe") # 这是一个示例命令,具体的命令需要根据你的系统和路径进行设置
else:
# 在这里编写代码,设置"XX.exe"程序在后台运行,并将"游戏.exe"与之关联
pass
def main():
# 在这里编写代码,设置"XX.exe"程序在后台运行,并将"游戏.exe"与之关联
run_game_as_guest()
if __name__ == "__main__":
main()
请注意,以上示例代码只是给出了一个实现关联程序的基本思路,并提供了相应的示例代码。具体的实现细节可以根据你的具体需求进行调整和优化。同时,由于程序之间的关联和运行方式可能因操作系统和环境而异,可能需要进一步的测试和调试以确保其正常工作。
【相关推荐】
是要做成应用还是小程序呢
您好!根据您的需求,我们可以为您提供一款软件,名为XX.exe。该软件可以在后台运行,不会有任何界面或提示。同时,我们还可以设置XX.exe以其他用户身份运行游戏.exe,阻止管理员运行游戏.exe,并将游戏.exe以来宾身份运行。这样,表面上看起来与正常启动游戏.exe一模一样,但实际上在任务管理器中,游戏.exe的身份已经变成了来宾用户,比如Guest。如果您对此感兴趣,请提供您的用户名和密码,我们将为您进一步操作。谢谢!
引用 皆我百晓生 小程序回复内容作答:
可以为您提供以下解决方案:
使用C#编写一个控制台程序,命名为XX.exe。在程序中使用Process.Start方法启动游戏.exe,并将其隐藏运行,以实现后台运行。
使用C#编写一个WinForm程序,命名为游戏.exe。在程序中通过检测当前用户身份,如果为管理员身份,则通过Process.Start方法运行bat文件或以其他用户身份运行游戏.exe。
将游戏.exe与XX.exe放在同一个文件夹中,并创建一个bat文件,命名为游戏.bat。在bat文件中使用runas命令以其他用户身份运行XX.exe。
当管理员身份双击运行游戏.exe时,游戏.exe会调用XX.exe来阻止管理员运行游戏.exe,并以其他用户身份运行游戏.exe。
为了更详细地了解您的需求并提供更精确的解决方案,建议进一步沟通。
钩子,嘿嘿嘿。。。
CreateWindowsHookEx
只要有钩子什么都可以做到
提供参考实例:https://www.cnblogs.com/shelley/p/1506573.html
创建一个批处理脚本(比如run_game.bat),该脚本用于启动游戏.exe,并使用其他用户的凭据。
runas /user:Guest "path\to\游戏.exe"
请将 "path\to\游戏.exe" 替换为游戏.exe 的实际路径。
这个可刑啊直接hook它的dll就行
参考gpt:
结合自己分析给你如下建议:
Windows 10 下以其他用户身份运行程序 - Wikix - 博客园 这篇博客介绍了如何使用组策略和 runas 命令来实现以其他用户身份运行程序的功能。
以管理员帐户身份启动应用程序 - Windows Server | Microsoft Learn 这篇文章介绍了如何使用右键菜单和 Windows 安全中心来以管理员帐户身份启动应用程序。
启用和使用运行方式功能 - Windows Server | Microsoft Learn 这篇文章介绍了如何使用运行方式功能来以另一用户身份启动程序,并提供了详细的步骤和示例。
win10里面怎么以其他身份运行 - 百度知道 这个问题的回答提供了一个简单的方法来在 win10 中启用“以其他用户身份运行”的选项。
shell脚本中使用其他用户执行脚本 - Bigben - 博客园 这篇博客介绍了如何使用 sudo 命令来在 shell 脚本中以其他用户执行脚本。
结合GPT给出回答如下请题主参考
你可以使用 Windows 的关联功能来实现在双击 XX.exe 文件时自动使用其他用户身份运行。具体步骤如下:
右键点击 XX.exe 文件,在上下文菜单中选择“属性”选项。
在“属性”窗口中选择“详细信息”选项卡。
在“详细信息”选项卡中,找到“文件属性”部分的“文件版本”项,点击“公司名”旁边的“修改”按钮。
在弹出的“修改字符串”窗口中,输入“runas”(不包括引号),点击“确定”按钮。
关闭“属性”窗口。
在完成以上步骤后,双击 XX.exe 文件时,会弹出询问是否使用其他用户身份运行的窗口,输入用户名和密码后即可以指定用户身份运行 XX.exe 文件。
同时,也可以编写一个简单的批处理文件来实现启动游戏.exe 文件和 XX.exe 文件的关联。具体步骤如下:
@echo off
start /d "游戏.exe 文件所在的目录" 游戏.exe
runas /user:"其他用户名" "XX.exe 文件的完整路径"
将文本文件保存为“启动.bat”(不包括引号)。
双击“启动.bat”文件即可启动游戏.exe 文件并以其他用户身份运行 XX.exe 文件。
以上就是一款简单的关联程序的实现方法,希望对你有所帮助。
引用gpt作答:
打开XX.exe并在后台运行:您可以使用C语言编写一个程序,通过调用系统函数或使用第三方库来打开XX.exe,并将其设置为后台运行,不显示界面或任何提示。您可以使用CreateProcess
函数或其他类似的函数来实现这个功能。
阻止管理员运行游戏.exe并以其他用户身份运行:您可以编写一个批处理文件(.bat),在其中使用runas
命令以其他用户身份运行游戏.exe。然后,您可以在管理员身份下双击运行游戏.exe时,通过调用批处理文件来实现以其他用户身份运行游戏.exe的功能。
请注意,为了实现这些功能,您需要具备一定的编程和系统操作知识。如果您对C语言和批处理文件不熟悉,可能需要参考相关的文档和教程来学习和理解这些知识。
引用gpt
根据您的需求,您可以尝试使用以下步骤来实现:
题主,这个问题我来替你解决(参考结合AI智能、文心一言),若有帮助,还望采纳,点击回答右侧采纳即可。
实现思路:
使用C#编写一个控制台程序,命名为 XX.exe,将其设为后台运行,不显示任何提示信息。
使用C#编写另一个控制台程序,命名为游戏.exe,并将其关联到XX.exe,即在游戏.exe的代码中调用XX.exe,使其后台运行。
在游戏.exe中添加管理员权限检测,当检测到当前用户有管理员权限时,向XX.exe发送指令,让其阻止游戏.exe的运行,并以其他用户身份运行游戏.exe。
使用C#编写一个bat文件,在其中以指定用户的身份启动游戏.exe。
代码实现:
XX.exe:
class Program
{
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
static void Main(string[] args)
{
// 隐藏控制台窗口
IntPtr hwnd = GetConsoleWindow();
ShowWindow(hwnd, 0);
// 关联游戏.exe
Process.Start("游戏.exe");
}
}
游戏.exe:
class Program
{
[DllImport("advapi32.dll", SetLastError = true)]
static extern bool CheckTokenMembership(IntPtr TokenHandle, IntPtr SidToCheck, out bool IsMember);
static void Main(string[] args)
{
// 检测管理员权限
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
bool isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
if (isAdmin)
{
// 向XX.exe发送指令,阻止游戏.exe运行,并以其他用户身份运行
Process[] processes = Process.GetProcessesByName("XX");
foreach (Process process in processes)
{
IntPtr handle = OpenProcess(PROCESS_ALL_ACCESS, false, process.Id);
if (handle != IntPtr.Zero)
{
byte[] bytes = Encoding.Default.GetBytes("block");
int length = bytes.Length + 1;
IntPtr address = VirtualAllocEx(handle, IntPtr.Zero, length, MEM_COMMIT, PAGE_READWRITE);
if (address != IntPtr.Zero)
{
bool success = WriteProcessMemory(handle, address, bytes, length, 0);
if (success)
{
IntPtr kernel32 = LoadLibrary("kernel32.dll");
IntPtr loadUserLibrary = GetProcAddress(kernel32, "LoadUserLibrary");
IntPtr threadId = IntPtr.Zero;
if (loadUserLibrary != IntPtr.Zero)
{
CreateRemoteThread(handle, IntPtr.Zero, 0, loadUserLibrary, address, 0, out threadId);
}
}
}
}
}
}
else
{
// 以普通用户身份启动游戏.exe
string user = "Guest";
string password = "password";
string domain = ".";
ProcessStartInfo info = new ProcessStartInfo("cmd.exe", $"/C runas /user:{user}@{domain} \"start 游戏.exe\"")
{
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true,
UserName = user,
Password = SecurePassword(password)
};
Process process = new Process
{
StartInfo = info
};
process.Start();
}
}
// 字符串加密密码
static SecureString SecurePassword(string password)
{
SecureString securePassword = new SecureString();
foreach (char c in password)
{
securePassword.AppendChar(c);
}
return securePassword;
}
}
运行bat文件以其他用户身份启动游戏.exe:
runas /user:Guest "游戏.exe"
作为IT专家,我建议您使用Python来编写一个简单的关联程序。Python是一种易于学习且功能强大的编程语言,它具有丰富的库和工具,可以帮助您实现所需的功能。
以下是一个简单的Python脚本,可以实现您所需的功能:
python
import os
import subprocess
# 设置要启动的游戏程序路径
game_exe = "游戏.exe"
# 检查是否以管理员权限运行脚本
if os.geteuid() == 0:
print("脚本正在以管理员权限运行")
# 启动游戏程序
subprocess.Popen(game_exe)
您可以将上述代码保存为.py文件,然后通过Python解释器来运行它。该脚本将启动您指定的游戏程序。
请注意,此脚本仅启动游戏程序,而不进行任何权限更改或模拟其他用户身份的操作。如果您需要实现更复杂的功能,例如更改用户权限或模拟其他用户身份,可能需要使用更高级的技术或工具。
我看刑……… 不敢写。可以通过程序调用实现或者bat脚本
参考gpt
根据您的需求,我可以为您提供以下解决方案。请注意,这个方案是基于C语言编写的,可以通过隐藏窗口的方式在后台运行,并且可以阻止管理员运行游戏程序并同时运行您的bat文件。
#include <windows.h>
BOOL IsUserAdmin() {
BOOL bIsAdmin = FALSE;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
if (AllocateAndInitializeSid(&NtAuthority, 2,
SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0, &AdministratorsGroup)) {
if (!CheckTokenMembership(NULL, AdministratorsGroup, &bIsAdmin)) {
bIsAdmin = FALSE;
}
FreeSid(AdministratorsGroup);
}
return bIsAdmin;
}
int main() {
if (IsUserAdmin()) {
// 阻止管理员运行游戏程序
MessageBox(NULL, "您无权运行游戏程序!", "错误", MB_ICONERROR);
} else {
// 运行您的bat文件
system("start /min laibin.bat");
}
return 0;
}
需要详细实现则私信,这是我的思路
首先,你可以使用C语言编写一个程序,通过检测当前用户是否为管理员来判断是否允许运行游戏程序。你可以使用Windows API函数CheckTokenMembership来检查当前用户是否为管理员。如果不是管理员,你可以选择直接退出程序或者运行你自己的bat文件。
然后,你可以使用C语言编写一个程序,通过调用Windows API函数ShowWindow来将程序窗口隐藏。这样程序就可以在后台运行,不会显示在任务栏或桌面上。
最后,你可以将这个C语言程序编译成可执行文件,并将其与游戏程序和bat文件放在同一个目录下。当用户双击运行游戏程序时,你的程序会自动运行,检测用户权限并执行相应的操作。