Articles of pipe理员

Windows:使用CMD(或Java)从非特权运行特权命令

我将有一个以pipe理员身份运行并监听端口的服务。 我的GUI程序将与pipe理员服务通话以获取需要pipe理员权限的项目。 如果服务还没有运行,我将需要启动它。 我如何让我的GUI程序以pipe理员身份运行命令? 我假设用户会被问到是否要继续。 我希望有一些我可以键入一个CMD窗口,因为这应该很适合我的Java程序。 我在想,像run-as-admin javaw my-service.jar这里run-as-admin是询问是否继续的命令。

c – realloc()在Windows 7中成功,但在Windows XP中失败,为什么?

所以我的代码有以下realloc块: char **ptr = NULL; void realloc_ptr(unsigned int new_size) { void *temp = NULL; temp = realloc(ptr, new_size * sizeof(*ptr)); if(temp != NULL) { ptr = temp; } else { exit(EXIT_FAILURE); } } 在调用此函数之前, new_size会递增。 这个数组总是只能被扩展。 而且,我的代码中new_size从不超过3(现在)。 现在上面的realloc调用在我的Windows 7testing期间工作正常。当我在XP中testing这个代码时,上面的代码会成功3次,然后它会在第四次抛出一个exception。 当我回到代码(这台计算机没有代码)时,我会发布确切的exception。 我猜测我的内存太碎,系统无法分配连续的内存块。 我testing了我的内存泄漏代码,并修复了所有这些(我希望)。 任何想法为什么发生这种情况? 编辑: 当我使用Doug Lea的malloc.c时,上述问题就消失了。 但我仍然想知道为什么会发生这种情况。 谢谢!

使用未分配的内存没有错误?

为什么这个工作? #include <iostream> using namespace std; int main() { float* tab[3]; int i = 0; while(i < 3) { tab[i] = new float[3-i]; i++; } cout << tab[2][7] << endl; tab[2][7] = 6.87; cout << tab[2][7] << endl; i = 0; while(i < 3) delete[] tab[i]; } 而这一个不? #include <iostream> using namespace std; int main() […]

如何确定一个进程“虚拟大小”(WinXP)?

我有一个需要大量内存的程序,一旦达到2GB的虚拟地址空间就会崩溃。 Sysinternals进程资源pipe理器将其显示为“虚拟大小”列。 我怎样才能用C(或C ++)代码来确定这个“虚拟大小”? 好吧,我必须查询“虚拟字节”的性能计数器。 Perfmon在我的德语Win XP安装中显示查询string(或如何调用),例如“\ Process(firefox)\ VirtuelleGröße”。 如何确定“当前进程”的查询string,是否有一个非本地化的名称?

我如何在Windows上读取pipe道input?

我正在尝试在Perl中创build基本类似于Unix tee命令的东西。 我试图阅读STDIN每一行,运行一个替代,并打印出来。 (最后,也打印到一个文件。)这工作,如果我使用控制台input,但如果我尝试pipe道input命令它什么都不做。 这是一个简单的例子: print "about to loop\n"; while(<STDIN>) { s/2010/2009/; print; } print "done!\n"; 我尝试pipe道dir命令,像这样: C:\ perltest> dir | mytee.pl 即将循环 完成了! 为什么没有看到pipe道input? (我在WinXP上使用Perl 5.10.0,如果这是相关的。)

当Windows可以访问的总内存也被限制为4GB时,Windows如何为多个进程分配4GB的地址空间?

当Windows可以访问的总内存也被限制为4GB时,Windows如何为多个进程分配4GB的地址空间? 上述问题的解决scheme,我发现在Windows内存pipe理(作者:Pankaj Garg) 解: 要实现这个Windows使用称为分页的x86处理器(386及以上)的function。 分页允许软件使用与物理内存地址不同的内存地址(称为逻辑地址)。 处理器的分页单元将这个逻辑地址透明地转换成物理地址。 这使得系统中的每个进程都有自己的4GB逻辑地址空间。 任何人都可以帮助我以更简单的forms来理解它吗?

dynamicselect每个用户和每台机器的安装

我正在使用Inno安装程序来部署应用程序。 对于大多数情况下,不需要pipe理员权限的每用户安装都可以。 但是,有些情况下我需要为所有用户安装应用程序,例如Citrix或TSE。 不幸的是,在每个用户和每台机器之间dynamicselect似乎是不可能的。 这取决于在编译时设置的PrivilegesRequired设置。 我最近的解决方法尝试几乎让我在那里。 基本上我有一个设置PrivilegesRequired设置为lowest ,如果我需要安装所有用户,我重新启动与pipe理员权限的设置。 这工作, 但卸载信息仍写入到HKEY_CURRENT_USER而不是HKEY_LOCAL_MACHINE 。 我的问题: – 是否有一种方法来实现双用户/每机安装与Inno安装程序? (不生成两个不同的安装程序) – 如果不是,有没有办法写入卸载信息HKEY_LOCAL_MACHINE当PrivilegesRequired设置为lowest ? 编辑: 这个问题接受的答案不适用于我的情况。 我只想要在命令行上传递一个特定的参数( /AllUsers )时才请求UAC提升。 没有这个参数,即使用户是pipe理员,UAC提示也不应该出现。 而TLama的答案与我目前的方法有同样的问题。

何时/为什么要使用heapmin?

客户对我们的应用程序有一些内存使用要求。 他们指出,虽然我们的承诺记忆是合理的,但保留的记忆是高的。 他们怀疑这是因为CRT堆增长,因为我们分配内存,但是当内存被释放时,CRT不返回页面到操作系统。 我们只是使用内置的运算符new / delete / new [] / delete [] – 以及malloc / free的一些用法。 他们问:“你的内存pipe理员在某个时候调用_heapmin来压缩堆? 呃,我们不明确地调用_heapmin。 我们应该吗? 有没有什么经验法则的使用?

在32位Windows可执行文件中使用/ LARGEADDRESSAWARE的缺点?

我们需要将其中一个可执行文件与这个标志链接起来,因为它使用了大量的内存。 但为什么给一个EXE文件的特殊处理。 为什么不标准化/ LARGEADDRESSAWARE? 所以问题是:使用/ LARGEADDRESSAWARE有什么问题,即使你不需要它。 为什么不把它用作所有EXE文件的标准?

Java Runtime.getRunTime()。exec(CMD)不支持pipe道

我试图编写一个程序,将显示并能够使用JFrame窗口更新您的IP地址设置。 我正在看纯粹在Windows上运行,所以我试图能够使用netsh Windows命令来检索/设置的细节。 windows命令: netsh interface ip show config name="Local Area Connection" | Find "IP" netsh interface ip show config name="Local Area Connection" | Find "IP"返回正是我想要的,但是我写的代码不会通过pipe道工作,它只会在我写入“本地连接”部分时才起作用。 有什么方法可以使用pipe道function来只返回IP地址? 我读过,你可以传递行作为string数组,即string[] cmd = netsh …….. package ipchanger; import java.io.BufferedReader; import java.io.InputStreamReader; public class test { private String CMD; public void executecommand(String CMD) { this.CMD = CMD; try { […]