让程序只运行一个实例的四种方法(转)

合集下载

如何让电脑只运行指定程序

如何让电脑只运行指定程序

注意:一定要在“只运行许可的Windows应用程序”列表中添加“cmd.exe”、“regedit.exe”或者“gpedit.msc”或者“mmc.exe”。
要不你就不能恢复这个设置了。就会出现把自己关在门外,把钥匙丢到门里了。
1、组策略(实时生效)
开始--运行,输入“gpedit.msc”,然后依次展开“用户配置”--“管理模板”--“系统”
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoDriveTypeAutoRun"=dword:00000091
"RestrictRun"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]
"1"="cmd.;="iexplore.exe"
3、批处理(注销或者重启之后生效)
将下面的代码保存为 *.bat 的文件,如1.bat;然后双击即可
@echo off
set regpath="HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
"1"="cmd.exe"
"2"="iexplore.exe"
"3"="sndrec32.exe"

怎样限制应用程序只运行一次

怎样限制应用程序只运行一次

怎样限制应用程序只运行一次?32位操作系统中,可以用两种方法实现:1.首先在global external functions声明外部函数如下:FUNCTION long FindWindowA( ulong Winhandle, string wintitle ) Library ″user32″然后在application的 Open 事件中加入如下代码:ulong l_handle, lu_classstring ls_namels_name = ″我的系统″ //此处ls_name为系统主窗口的标题Titlel_handle = FindWindowA(lu_class, ls_name)if l_handle > 0 thenMessageBox(″提示信息″, ″应用程序″ + This.AppName +″已经运行,不能多次启动!″) Halt Closeelseopen(w_main) //此处为系统主窗口end if这种方法是PowerBuilder联机帮助中的一个例子,是以系统主窗口的标题Title作为判别依据,若有其它与此Title同名应用程序在运行,再想启动此程序也会报应用程序已经运行。

你可以将Title 设为“计算器”,然后启动Windows附件中计算器程序,再运行你的PB应用程序试试。

2.声明外部函数:function ulong CreateMutexA (ulong lpMutexAttributes, int bInitialOwner, ref string lpName) library ″kernel32.dll″function ulong GetLastError () library ″kernel32.dll″然后在application的 Open 事件中加入如下代码:ulong ll_mutex, ll_errstring ls_mutex_nameif handle (GetApplication (), false) <> 0 thenls_mutex_name = this.AppName + char (0)ll_mutex = CreateMutexA (0, 0, ls_mutex_name)ll_err = GetLastError ()if ll_err = 183 then//程序已经运行MessageBox (″提示信息″, ″程序已经运行了!″)Halt closeelse//程序未运行open(w_main)end ifelse //开发模式open(w_main)end if这种方法必须在应用程序编译成可执行文件.exe后才有效.。

java单例模式的实际应用

java单例模式的实际应用

java单例模式的实际应用Java单例模式是一种常用的设计模式,它可以保证在一个JVM中只存在一个实例对象。

在实际应用中,单例模式可以解决一些特定场景下的问题,提高系统的性能和效率。

一、数据库连接池在使用数据库连接时,每次都需要创建连接对象和释放连接对象,这个过程比较耗时。

如果每次都创建新的连接对象,会导致系统性能下降。

这时可以使用单例模式来创建一个数据库连接池,保证系统中只有一个连接池对象,通过连接池管理连接的创建和释放,提高了系统的性能和效率。

二、日志记录器在系统开发中,通常需要记录系统的运行日志,以供日后排查问题或者监控系统运行状态。

使用单例模式创建一个日志记录器对象,可以保证系统中只有一个日志记录器实例,所有的日志记录都通过这个实例进行操作,便于集中管理和统一处理。

三、配置文件管理器在系统开发中,通常需要读取配置文件中的参数或者属性,以便灵活配置系统的行为。

使用单例模式创建一个配置文件管理器对象,可以保证系统中只有一个配置文件管理器实例,所有的配置文件读取操作都通过这个实例进行,便于统一管理和维护。

四、线程池在多线程编程中,线程的创建和销毁都需要耗费一定的系统资源。

如果每次都创建新的线程,会导致系统资源的浪费。

使用单例模式创建一个线程池对象,可以保证系统中只有一个线程池实例,通过线程池管理线程的创建和销毁,提高了系统的性能和效率。

五、缓存管理器在系统开发中,通常需要缓存一些数据,以提高系统的访问速度。

使用单例模式创建一个缓存管理器对象,可以保证系统中只有一个缓存管理器实例,通过缓存管理器来管理缓存的读取、存储和更新,提高了系统的性能和效率。

六、打印机管理器在某些场景下,需要使用打印机进行打印操作。

如果每次都新建一个打印机对象,会导致系统资源的浪费。

使用单例模式创建一个打印机管理器对象,可以保证系统中只有一个打印机管理器实例,通过打印机管理器来管理打印机的使用,提高了系统的性能和效率。

七、窗口管理器在图形界面编程中,通常需要使用窗口进行用户交互。

单例模式在项目中的应用

单例模式在项目中的应用

单例模式在项目中的应用一、引言单例模式是一种常见的设计模式,在项目开发中具有广泛的应用。

它的主要目的是确保一个类只有一个实例,并提供一个全局的访问点来获取该实例。

本文将介绍单例模式在项目中的应用,并探讨其优势和适用场景。

二、单例模式的定义与特点单例模式是一种创建型设计模式,它通过限制类的实例化次数为1,来确保只有一个实例存在。

它具有以下特点:1. 私有构造函数:单例类的构造函数被私有化,以防止外部代码创建该类的实例。

2. 静态变量:单例类中通常包含一个静态变量来保存唯一的实例。

3. 静态方法:通过静态方法获取该实例,确保全局唯一访问点。

三、单例模式在项目中的应用单例模式在项目开发中有许多实际应用,下面将介绍几个常见的应用场景。

1. 配置信息管理在项目中,通常会有一些配置信息需要全局访问,比如数据库连接信息、系统参数等。

使用单例模式可以将这些配置信息保存在一个单例类中,通过静态方法获取,避免在多个地方重复获取配置信息的操作。

2. 日志记录器在项目开发中,日志记录是非常重要的,可以帮助我们追踪和调试程序。

使用单例模式可以实现一个全局的日志记录器,所有的日志信息将统一保存在该实例中,方便查阅和管理。

3. 缓存管理在大型项目中,通常会使用缓存来提高系统性能。

单例模式可以用来实现缓存管理器,将缓存对象保存在单例类的静态变量中,通过静态方法进行访问和操作。

这样可以确保缓存对象的唯一性,避免重复创建和管理多个缓存实例。

4. 线程池在多线程编程中,线程池是一种常见的优化方式。

单例模式可以用来创建和管理线程池实例,确保线程池的唯一性和全局访问。

通过单例模式,可以方便地在项目中使用线程池,提高系统的并发处理能力。

5. 数据库连接池在使用数据库时,连接池是一种常见的技术,用于管理数据库连接的创建和回收。

单例模式可以用来实现数据库连接池,确保连接池的唯一性和全局访问。

通过单例模式,可以方便地在项目中使用数据库连接池,提高数据库操作的效率和性能。

c语言循环中特定操作只执行一次的方法

c语言循环中特定操作只执行一次的方法

c语言循环中特定操作只执行一次的方法C语言中,有时候我们需要在循环中执行特定操作,但是希望这个操作只执行一次。

这种需求在实际编程中非常常见,比如在某个条件满足时打印一条提示信息,或者在程序开始时初始化某个变量等。

本文将介绍在C语言中实现这种特定操作只执行一次的方法。

在C语言中,我们可以利用一个标志位来实现特定操作只执行一次的效果。

具体的实现步骤如下:1. 首先,我们需要定义一个标志位变量,用来记录特定操作是否已经执行过。

可以使用一个布尔型变量来表示,比如可以定义一个名为`flag`的变量,初始值为`false`。

2. 在循环开始之前,我们需要先判断标志位的值。

如果标志位为`false`,则执行特定操作,并将标志位设置为`true`,表示特定操作已经执行过了。

3. 在循环中,我们每次都先判断标志位的值。

如果标志位为`true`,则表示特定操作已经执行过了,我们可以跳过这个操作,继续执行下一次循环。

如果标志位为`false`,则执行特定操作,并将标志位设置为`true`。

下面是一个简单的示例代码,演示了如何使用标志位实现特定操作只执行一次:```c#include <stdio.h>int main() {int i;bool flag = false; // 标志位for (i = 0; i < 10; i++) {if (!flag) {printf("特定操作\n");flag = true;}// 循环中的其他操作printf("循环中的其他操作\n");}return 0;}```在上面的示例代码中,我们使用了一个`for`循环来模拟实际情况。

在循环开始之前,我们首先判断标志位的值。

由于初始时标志位为`false`,所以特定操作会被执行一次,并将标志位设置为`true`。

在循环中,我们每次都先判断标志位的值,如果为`true`,则跳过特定操作,继续执行下一次循环;如果为`false`,则执行特定操作,并将标志位设置为`true`。

C基础如何让代码只执行一次

C基础如何让代码只执行一次

C基础如何让代码只执⾏⼀次1.0 最简单, 最⾼效的⽅式C 代码运⾏起点 main 就是个⼤单例函数. 如果把函数注册在其⾥⾯, 那么⼀定很可以 :)// 某个库需要初始化的函数void log_init(void) {... ...}int main(int argc, char * argv[]) {... ...extern void log_init(void);log_init()... ...return 0;}是不是, 很轻松的完成了初始化⼯作.不妨赠送⼀个好⽤的宏, ⽤于处理这类事情//// EXTERN_RUN - 简单的声明, 并⽴即使⽤的宏// ftest : 需要执⾏的函数名称// ... : 可变参数, 保留//#define EXTERN_RUN(ftest, ...) \do { \extern void ftest(); \ftest (__VA_ARGS__); \} while(0)⽤起来更简单, 可以插在代码的任何⼀处EXTERN_RUN(log_run);2.0 多线程模式, 如何搞起呢继续看下⾯例⼦ once.c#include <stdio.h>#include <pthread.h>static void _once(void) {static long _cnt;printf("_once _cnt = %ld\n", ++_cnt);}//// pthread_once 感受//int main(int argc, char * argv[]) {pthread_once_t once = PTHREAD_ONCE_INIT;puts("pthread_once 感受开始 ... ");pthread_once(&once, _once);pthread_once(&once, _once);puts("pthread_once 感受结束 ... ");return 0;}gcc -g -Wall -o once.out once.c -lpthread最终运⾏结果, 也是如我们所料那样pthread_once 实际开发中多⽤于初始化线程私有变量. 其内部实现加锁的.不妨问个⼩问题, 如果需要你去实现 pthread_once 你会怎么分析呢 ?这个问题好解答也不好解答.核⼼亮点在于 pthread_once 运⾏的函数实体崩溃了. 多线程之间如何避免死锁.不妨参照下⾯ winds 上⾯ pthread_once ⼀位⼤佬的实现:#include "pthread.h"#include "implement.h"/* [i_a] simple wrapper ensures correct calling convention for all */static void PTW32_CDECLptw32_mcs_lock_cleanup(void *args){ptw32_mcs_local_node_t *node = (ptw32_mcs_local_node_t *)args;ptw32_mcs_lock_release(node);}intpthread_once (pthread_once_t * once_control, void (PTW32_CDECL *init_routine) (void)){if (once_control == NULL || init_routine == NULL){return EINVAL;}if ((PTW32_INTERLOCKED_LONG)PTW32_FALSE ==(PTW32_INTERLOCKED_LONG)PTW32_INTERLOCKED_EXCHANGE_ADD_LONG((PTW32_INTERLOCKED_LONGPTR)&once_control->done, (PTW32_INTERLOCKED_LONG)0)) /* MBR fence */{ptw32_mcs_local_node_t node;ptw32_mcs_lock_acquire((ptw32_mcs_lock_t *)&once_control->lock, &node);if (!once_control->done){#if defined(PTW32_CONFIG_MSVC7)#pragma inline_depth(0)#endifpthread_cleanup_push(ptw32_mcs_lock_cleanup, &node);(*init_routine)();pthread_cleanup_pop(0);#if defined(PTW32_CONFIG_MSVC7)#pragma inline_depth()#endifonce_control->done = PTW32_TRUE;}ptw32_mcs_lock_release(&node);}return 0;} /* pthread_once */核⼼是通过 pthread_cleanup_push 和 pthread_cleanup_pop 解决崩溃死锁问题.当然还有⼀种思路, 可以解决上⾯问题. 不妨往下看.3.0 跳过锁问题, 尝试原⼦操作先举个⼩例⼦#include <stdio.h>static void _once(void) {static long _cnt;printf("_once _cnt = %ld\n", ++_cnt);}//// run once 感受//int main(int argc, char * argv[]) {puts("run once 感受开始 ... ");{static int _done;if (__sync_bool_compare_and_swap(&_done, 0, 1)) {_once();}if (__sync_bool_compare_and_swap(&_done, 0, 1)) {_once();}}puts("run once 感受结束 ... ");return 0;}运⾏展⽰:这⾥通过 GCC 提供的原⼦交换 __sync_bool_compare_and_swap 解决的.不妨继续赠送的封装宏, 来完成上⾯操作#define ONCE_RUN(code) { \static int _done; \if (!_done) { \if (__sync_bool_compare_and_swap(&_done, 0, 1)) { \code \} \} \}因为是原⼦操作, 没有锁那么重, ⾃然出了问题也不会引起死锁问题.当然有⼈说 pthread, __sync_xxx 都是和 GCC 绑定的, 那么 CL 能不能使⽤了. 当然也是可以的.通过上⾯基础封装库⽀持, ⽤ C 写系统应⽤相关代码还是很好搞的.把酒满上, 还能再写⼏⾏代码有问题, 是肯定的. 欢迎指正, 更新是共同提⾼的过程.回头看看, 时间好快呀. 那些个⼀块补习, 为了玩的伙伴们, ⼆胎孩⼦都快上学了.哈哈.咱们⼀线秃头兵还在为了穷⽽冲锋陷阵 (°ー°〃)。

C++实现程序单实例运行的两种方式

C++实现程序单实例运行的两种方式

C++实现程序单实例运⾏的两种⽅式简介在我们编写程序的时候,经常会注意到的⼀个问题就是如何能够让程序只运⾏⼀个实例,确保不会让同⼀个程序多次运⾏,从⽽产⽣诸多相同进程,给我们的带来不便呢?那么常⽤的有以下四种⽅法,第⼀种⽅法是通过扫描进程列表⽐对进程名来检测,第⼆种⽅法是通过枚举程序窗⼝的⽅式,第三种⽅法是采⽤共享全局变量来实现,第四种⽅法是通过创建互斥体来实现。

那么在这些⽅法中,第⼀种和第⼆种⽅法是有缺陷的,扫描进程列表⽐对进程名容易对相同进程名字的不同程序产⽣误报,枚举窗⼝不适⽤于⽆窗⼝程序且与扫描进程列表的⽅法也有相同的缺陷。

所以本⽂笔者为⼤家介绍第三种⽅法与第四种⽅法的具体实现。

代码实现1. 互斥体实现⽅式////////////////////////////////////////////////////////////////////// FileName : SingleRunByMutex.cpp// Creator : PeterZheng// Date : 2019/2/16 11:21// Comment : 互斥体实现进程单实例运⾏////////////////////////////////////////////////////////////////////#include <iostream>#include <cstdio>#include <cstdlib>#include <Windows.h>using namespace std;// 使⽤互斥体保证单体运⾏BOOL IsAlreadyRun(){HANDLE hMutex = NULL;hMutex = CreateMutex(NULL, FALSE, "MYFLAG");if (hMutex != NULL){if (ERROR_ALREADY_EXISTS == GetLastError()){ReleaseMutex(hMutex);return TRUE;}}return FALSE;}// 主函数int APIENTRY WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd){if (IsAlreadyRun()){MessageBox(NULL, "This Program is already RUN !", "Tips", MB_OK);}else{MessageBox(NULL, "I am RUN !", "Tips", MB_OK);Sleep(30000);}ExitProcess(0);return 0;}2. 共享全局变量实现⽅式////////////////////////////////////////////////////////////////////// FileName : SingleRunByShareSeg.cpp// Creator : PeterZheng// Date : 2019/2/16 11:40// Comment : 通过共享全局变量的⽅式实现进程单实例运⾏////////////////////////////////////////////////////////////////////#include <iostream>#include <cstdio>#include <cstdlib>#include <Windows.h>using namespace std;// 创建共享内存段#pragma data_seg("sharedata")DWORD dwFlagId = 0xEE;#pragma data_seg()#pragma comment(linker, "/SECTION:sharedata,RWS")// 使⽤共享内存段保证单体运⾏BOOL IsAlreadyRun(){if (dwFlagId == 0xEF){return TRUE;}return FALSE;}// 主函数int APIENTRY WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd) {if (IsAlreadyRun()){MessageBox(NULL, "This Program is already RUN !", "Tips", MB_OK);}else{MessageBox(NULL, "I am RUN !", "Tips", MB_OK);dwFlagId = 0xEF;Sleep(30000);}ExitProcess(0);return 0;}。

单例使用场景

单例使用场景

单例使用场景单例模式是一种常用的设计模式,它能够确保一个类只有一个实例,并提供一个全局访问点。

在某些特定的场景下,使用单例模式能够有效地解决一些问题,提高代码的可维护性和性能。

本文将从不同的角度探讨单例模式的使用场景。

一、资源共享场景在某些情况下,系统中只需要存在一个共享的资源,比如数据库连接池、线程池、缓存等。

如果每次需要使用这些资源时都创建新的实例,会导致资源的浪费,并且可能会出现竞争条件。

这时候使用单例模式可以确保资源的共享和唯一性,避免资源的重复创建和冲突。

二、配置文件场景在很多应用程序中,都会使用配置文件来存储一些固定的配置信息,比如数据库连接信息、系统参数等。

这些配置信息在整个应用程序中是唯一的,如果每次需要使用配置信息时都读取一次配置文件,会导致性能的损耗。

使用单例模式可以将配置信息读取一次并保存在单例对象中,以后每次需要使用配置信息时直接从单例对象中获取,避免了重复读取配置文件的开销。

三、日志记录场景在大部分应用程序中,都需要记录一些日志信息,比如错误日志、调试日志等。

如果每次记录日志时都创建一个新的日志对象,会导致大量的内存开销,并且可能会出现日志信息的丢失。

使用单例模式可以确保日志对象的唯一性,避免了内存的浪费和日志的丢失。

四、线程池场景在并发编程中,经常需要使用线程池来管理线程的创建和销毁。

如果每次需要执行任务时都创建一个新的线程池,会导致线程的频繁创建和销毁,降低了系统的性能。

使用单例模式可以确保线程池的唯一性,避免了线程的重复创建和销毁,提高了系统的性能。

五、计数器场景在某些应用程序中,需要使用计数器来统计某个事件的发生次数,比如网站的访问量统计、订单的数量统计等。

如果每次统计时都创建一个新的计数器对象,会导致计数的不准确和资源的浪费。

使用单例模式可以确保计数器的唯一性,避免了计数的不准确和资源的浪费。

六、任务调度场景在很多应用程序中,需要使用任务调度来定期执行一些任务,比如定时发送邮件、定时备份数据库等。

C#只启动一个进程的方法

C#只启动一个进程的方法
protected override void OnStartup(StartupEventArgs e)
{
Process currentProcess = Process.GetCurrentProcess();
foreach (Process item inProcess.GetProcessesByName(currentProcess.ProcessName))
foreach (Process item in Process.GetProcessesByName(currentProcess.ProcessName))
{
if (item.Id != currentProcess.Id &&
(item.StartTime - currentProcess.StartTime).TotalMilliseconds <= 0)
C#只启动一个进程的方法
保证软件只运行一次还是很有必要的,方法也很简单,只要判断进程中有无当前的进程名就可以了。对于WPF的软件,在App.XAML.cs中判断。重写OnStartup方法就可以了。
[csharp]
public partial class App : Application
{
/// <summary>
{
item.Kill();
item.WaitForExit();
break;
}
}
base.OnStartup(e);
}
}
public partial class App : Application
{
/// <summary>
///只打开一个进程
/// </summary>

限制一个程序同时只能运行一个实例的方法

限制一个程序同时只能运行一个实例的方法

限制一个程序同时只能运行一个实例的方法限制一个程序同时只能运行一个实例的方法一般有两种,即使用“信号”与FindWindow,通常第一种方法较为安全,而第二种方法必须知道Window的CLASS(在MFC中是很痛苦的,而且一旦CLASS NAME变了以后程序也要跟着改),否则可能就会出错。

然而这两种方法都只能限制程序运行一次,如果要控制程序运行次数,比如3次,则使用以上的两种方法就会很困难。

前段时间写了一个HOOK函数,其中用到了共享变量,在这个程序写完后我突发奇想,不知道这个东西在EXE文件中是否有用?想到了那就试一试吧,一试,果然蛮爽的,居然也行,当时就想到这样一来如果要限制一个程序同时只能运行一个实例不是很简单,试了一下,当然毫无疑问的程序只运行了一个,代码如下:1、在一个CPP中所有函数实体外加入以下几句#pragma data_seg("SHARDAT")HWND ghMainWnd=NULL; //必须初始化,保存主窗口HANDLE#pragma data_seg()#pragma comment(linker,"/section:SHARDA T,RWS")2、在你的主窗口的OnCreate中对ghMainWnd赋值ghMainWnd = GetSafeHwnd();3、程序运行时(如Initinstance)判断ghMainWnd 是否为NULLif( ghMainWnd!=NULL && IsWindow(ghMainWnd) ){SendMessage( ghMainWnd, WM_YOURMESSAGE, ...return ...}怎么样,比第一种方法简单多了吧,有了以上代码,要限制程序运行次数就简单了,如下:1、在一个CPP中所有函数实体外加入以下几句#pragma data_seg("SHARDAT")HWND ghMainWnd[10]={}; //保存已运行的窗口HANDLE,没太多用int gRuned=0;#pragma data_seg()#pragma comment(linker,"/section:SHARDA T,RWS")2、在你的主窗口的OnCreate中对ghMainWnd赋值if( gRuned<10 )ghMainWnd[gRuned] = GetSafeHwnd();gRuned++;3、注意,必须在适当的时候减小gRuned, 如在OnDestroy中等4、程序运行时(如Initinstance)判断ghMainWnd 是否为NULLif( gRuned>=MAX_RUN ){SendMessage( ghMainWnd, WM_YOURMESSAGE, ...return ...}注意:在对gRuned操作时要注意同步其中MAX_RUN可以保存到REG或INI中,根据不同情况来设定。

让程序只运行一个实例的四种方法(转)

让程序只运行一个实例的四种方法(转)

准备工作这个操作必须要求你的文件系统是 NTFS 的。

FAT32文件系统不行哦。

右键点那个盘-> 属性-> 常规选项卡上-> 文件系统会显示你的文件系统。

如果是FAT32的系统,可以将它转成 NTFS 。

(易宝典提醒:转换成 NTFS 有可能会 带来一定麻烦。

比如,如果电脑上装了两个系统, 一个是 Windows 98、Windows ME 这 样早期的系统,老系统认不出 NTFS 的盘符。

)1. 开始-> 在开始搜索里打cmd ->然后在上面结果列表里右键 cmd ->点以管理 员身份运行。

共皐(HQ.*B^Lurm®a{v)(玄盘舷2 打开(O)"id丈屛呈紜:NTF5类型如果你看到一个Windows需要您的许可才能继续的消息,别奇怪,点一下继续确认就行。

2. 打上下面这个命令,然后按回车运行(x代表你的盘符,用你具体的盘符字母替换掉)。

con vert x: /fs: ntfs打开(O】p亘看洋有结果P BE妻Internet开始操作从现有分区中割一块出来做个分区1. 开始-> 右键计算机-> 管理2.在左侧找到存储下面的磁盘管理,点一下选中磁盘管理 3. 右键你要分割的那个分区,选压缩卷。

Windo/vs Live Messenger 下歎 最近隧用的项目 卜建Widows 会匹**!' Windows Update 网路 Windows Media PlayerWindows 菲片滓打开(6 彌苣理器(X) 搀零(£)•••Windovvs DVD Maker刚G}所有程席 幵担壌真默认 映射兩第匪輩圈"…斷开网捐驱號(6・・在卓面上显示⑸重令名(朗)4.在输入压缩空间量右边调节一个大小,默认情况下是允许的最大值,然后按压缩。

剩下多少空间没有用,可以压缩出来的空间不会超过现有分区大小的一半。

)你看到一部分空间释放出来了,然后你可以在这部分空间上新建个分区(不管你5.L=_O ■ |“| 蜩| 文43^・(CO M NTFS 如阴(MM 碗 SJTOtft,换 •a.・简单基專 NTFS决咅!S 好住分区) -HD”.蔺 H 基畜 NTFSf Ilf*—Ifi 盘 0 12402 G8 昧机CD ROM 0DVD (D :i JK 性『)WRJlH)6.LJ (U 〕简瑩 SX NTFS 4_■ D. “ 置呈 i_*D»+ i^= 基K NTFS 基工 NTTS ni 状态良好憶统「忘动.页面文件,:驗. 扶誉良好住分区) 状态貝好I 主分区〕 曲Q & 124.02 GB 联叽 (C) 69.48 GB 状态良好( DATA 10^3 G 愈期 当 CD-ROM 0 DVD (D :) DATA2 ( 34.18 GB 状杏良好] 1013 G 未尹配 ■未细■主分区已从现有分区中分割出了一块. 现在可以在空白位置创建新分区了 右键空白的空间-> 新建简单卷。

只允许运行指定的程序

只允许运行指定的程序
解决。
2。组策略其实也只是一个更改的界面,真正改的值存在C:\WINDOWS\system3
2\GroupPolicy\Adm下,你会发现许多.ADM的文件,这就是储存各项组策略
的值。如果删除了他们就会使组策略中的用户配置下的设置界面变灰。至于这些文件大家可以自己去研究,明天我可以把自己研究心得传
只允许运行指定的程序
所属分类:IT科技 | 2007-05-06 14:20:26
只允许运行指定的程序
为了限制用户运行程序,我们可以指定用户只能运行某些必须的程序。这种方式可以避免用户运行自己携带来的程序,有效地防范病毒地传播。这可以通过注册表来实现。
首先在注册表项HKEY_CURRENT_USER\Software\Microsoft \Windows\Current Version\Policies\Explorer下新建一个双字节值项RestrictRun ,修改其值为1,以允许我们指定可以运行的程序。
提示:如果你没有允许注册表编辑器运行,你会发现你将无法恢复此方法所做的修改,因为无法用注册表编辑器来修改注册表了。在这种情况下,你可以将注册表编辑器程序的名称改变为你允许运行的某个程序的名称,这样你就可以运行起来注册表编辑器了。
注意:由于此方法的限制性非常大,所以请小心使用,尤其是避免没有允许任何程序运行这种情况。如果出现了这种情况,你将无法将此方法做的设定改变回来,因为你无法修改注册表。惟一的方法就是恢复修改前的注册表备份。
上来。
另:(建议大家把C:\WINDOWS\system32\GroupPolicy\Adm的各个文件保存
起来,以后遇到组策略被改了,特别是一些初级用户不知道哪里被更改了,可以用备份的文件恢复到这里就可以了。复制回来后一切回到未设置状态。

windows组策略只运行指定的Windows应用程序

windows组策略只运行指定的Windows应用程序

windows组策略只运⾏指定的Windows应⽤程序继续域控组策略⼯作:
本节介绍限制⽤户只能运⾏指定的程序。

⼀:只运⾏指定的 Windows 应⽤程序
我只模拟配了⼀个程序,实际要根据需要配置的。

⼆:防⽌从"我的电脑"访问驱动器
不知道这是bug还是设计如此,反正限制的是应⽤程序的⽂件名,没有路径,没有MD5验证,随便想运⾏什么的话,直接把执⾏程序的名字改成许可的就⼜可以运⾏了,那么我们要防⽌使⽤⽂件资源管理器来改程序名。

三:绑定策略到OU
1.计算机策略
以前设置的策略主要是计算机策略,将策略绑定到对应的组织单位即可。

如下策略绑在组织单位上
那么这两台计算机就可以接收到对应的策略了。

2⽤户策略
如果⽤户还在Users⾥⾯,是⽆法⽣效的,简单处理,我将这两个⾃动登录计算机使⽤的⾃动登录⽤户也放这个OU⾥⾯,⽣效实现软件限制策略。

结语:
貌似规范的做法应该是把⽤户也分组管理,⽤户策略绑⽤户组织,计算机策略绑计算机组织。

Qt实现应用程序单实例运行--LocalServer方式

Qt实现应用程序单实例运行--LocalServer方式

Qt实现应⽤程序单实例运⾏--LocalServer⽅式使Qt应⽤程序能够单实例运⾏的典型实现⽅法是使⽤共享内存实现。

该⽅法实现简单,代码简洁。

但有⼀个致命缺陷:共享内存(QSharedMemory)实现的单程序运⾏,当运⾏环境是UNIX时,并且程序不幸崩溃,会导致共享内存⽆法释放,从⽽⽆法重新运⾏程序!所以应该寻找其他的使Qt应⽤程序能够单实例运⾏的⽅案。

于是找到LocalSocket和LocalServer通讯⽅案(据说Qt官⽅商业版的QSingleApplication的原理好像跟这个差不多)。

“要⽤到Qt的QLocalSocket,QLocalServer类,这两个类从接⼝上看和⽹络通信socket没有区别,但是它并不是真正的⽹络API,只是模仿了⽽已。

这两个类在Unix/Linux系统上采⽤Unix域socket实现,⽽在Windows上则采⽤有名管道(named pipe)来实现。

”参见:上⾯的⽅案实际操作过程中出现很多问题:QString serverName = QCoreApplication::applicationName(); //获取到的serverName为空为了解决上⾯的问题,最直接的测试⽅法是先⼿动指定⼀个serverName,然后将QFile::remove(m_localServer->serverName());改成QFile::remove(serverName);当⼿动指定serverName时,习惯上将serverName设为当前的应⽤程序名,在linux下这⼜导致下⾯的问题QFile::remove(m_localServer->serverName()); //执⾏删除失败(实际测试发现失败原因是:尝试删除应⽤程序⽂件⾃⾝!)上⾯的两个问题导致Qt应⽤程序⽆法单实例运⾏。

后来终于在StackOverflow上⾯看到解决⽅案:使⽤QLocalServer::removeServer()删除LocalServer名下⾯是实现代码:头⽂件:1 #ifndef SINGLEAPPLICATION_H2#define SINGLEAPPLICATION_H34 #include <QObject>5 #include <QApplication>6 #include <QtNetwork/QLocalServer>7 #include <QWidget>89class SingleApplication : public QApplication {10 Q_OBJECT11public:12 SingleApplication(int &argc, char **argv);1314bool isRunning(); // 是否已經有实例在运⾏15 QWidget *w; // MainWindow指针1617private slots:18// 有新连接时触发19void _newLocalConnection();2021private:22// 初始化本地连接23void _initLocalConnection();24// 创建服务端25void _newLocalServer();26// 激活窗⼝27void _activateWindow();2829bool _isRunning; // 是否已經有实例在运⾏30 QLocalServer *_localServer; // 本地socket Server31 QString _serverName; // 服务名称32 };3334#endif// SINGLEAPPLICATION_HCPP⽂件:1 #include "SingleApplication.h"2 #include <QtNetwork/QLocalSocket>3 #include <QFileInfo>45#define TIME_OUT (500) // 500ms67 SingleApplication::SingleApplication(int &argc, char **argv)8 : QApplication(argc, argv)9 , w(NULL)10 , _isRunning(false)11 , _localServer(NULL) {1213// 取应⽤程序名作为LocalServer的名字14 _serverName = QFileInfo(QCoreApplication::applicationFilePath()).fileName();1516 _initLocalConnection();17 }181920////////////////////////////////////////////////////////////////////////////////21// 说明:22// 检查是否已經有⼀个实例在运⾏, true - 有实例运⾏, false - 没有实例运⾏23////////////////////////////////////////////////////////////////////////////////24bool SingleApplication::isRunning() {25return _isRunning;26 }2728////////////////////////////////////////////////////////////////////////////////29// 说明:30// 通过socket通讯实现程序单实例运⾏,监听到新的连接时触发该函数31////////////////////////////////////////////////////////////////////////////////32void SingleApplication::_newLocalConnection() {33 QLocalSocket *socket = _localServer->nextPendingConnection();34if(socket) {35 socket->waitForReadyRead(2*TIME_OUT);36 delete socket;3738// 其他处理,如:读取启动参数3940 _activateWindow();41 }42 }4344////////////////////////////////////////////////////////////////////////////////45// 说明:46// 通过socket通讯实现程序单实例运⾏,47// 初始化本地连接,如果连接不上server,则创建,否则退出48////////////////////////////////////////////////////////////////////////////////49void SingleApplication::_initLocalConnection() {50 _isRunning = false;5152 QLocalSocket socket;53 socket.connectToServer(_serverName);54if(socket.waitForConnected(TIME_OUT)) {55 fprintf(stderr, "%s already running.\n",56 _serverName.toLocal8Bit().constData());57 _isRunning = true;58// 其他处理,如:将启动参数发送到服务端59return;60 }6162//连接不上服务器,就创建⼀个63 _newLocalServer();64 }6566////////////////////////////////////////////////////////////////////////////////67// 说明:68// 创建LocalServer69////////////////////////////////////////////////////////////////////////////////70void SingleApplication::_newLocalServer() {71 _localServer = new QLocalServer(this);72 connect(_localServer, SIGNAL(newConnection()), this, SLOT(_newLocalConnection())); 73if(!_localServer->listen(_serverName)) {74// 此时监听失败,可能是程序崩溃时,残留进程服务导致的,移除之75if(_localServer->serverError() == QAbstractSocket::AddressInUseError) {76 QLocalServer::removeServer(_serverName); // <-- 重点77 _localServer->listen(_serverName); // 再次监听78 }79 }80 }8182//////////////////////////////////////////////////////////////////////////////// 83// 说明:84// 激活主窗⼝85//////////////////////////////////////////////////////////////////////////////// 86void SingleApplication::_activateWindow() {87if(w) {88 w->show();89 w->raise();90 w->activateWindow(); // 激活窗⼝91 }92 }调⽤⽰例:1 #include "MainWindow.h"2 #include "SingleApplication.h"34int main(int argc, char *argv[]) {5 SingleApplication a(argc, argv);6if(!a.isRunning()) {7 MainWindow w;8 a.w = &w;910 w.show();1112return a.exec();13 }14return0;15 }。

Delphi实现程序只运行一次并激活已打开的程序

Delphi实现程序只运行一次并激活已打开的程序

Delphi实现程序只运行一次并激活已打开的程序Delphi实现程序只运行一次并激活已打开的程序我们的程序有时候只允许运行一次,并且最好的情况是,如果程序第二次运行,就激活原来的程序。

网上有很多的方法实现程序只运行一次,但对于激活原来的窗口却都不怎么好。

关键就在于激活原来的程序,一般的做法是在工程开始时,打开互斥量对象,如果打不开表示程序还没有运行,创建一个互斥量对象;如果打得开表示程序已经运行了,查找程序中一个特定的窗口,一般是主窗口,然后发送一个自定义消息,主窗口在这个消息处理中激活自己。

我原来就是这么做的,却发现有很多问题。

主窗口在消息处理函数中激活不了自己,众所周知激活一个窗口最有效的方法当然就是SetForegroundWindow,但在主窗口中调用这个函数激活自己的效果却是只在标题栏闪了一闪,如果在其他进程调用该函数则不会有问题;另外,如果程序是最小化的,它连闪都不闪了。

对于这些问题,我想了下面的办法,在知道原程序已经运行后,用FindWindow找原程序主窗口的句柄,找到了,就发送一个自定义消息过去,而在原程序主窗口的消息处理函数中,只是调用Application.Restore方法,这样如果原程序是最小化的就会还原过来。

在发送消息之后,紧接着我调用SetForegroundWindow并传入原程序主窗口的句柄,由于上面的处理,原程序肯定不是最小化了,且调用SetForegroundWindow 的地方已经不是原程序了(是第二次运行的程序,也可以说是另一个进程),所以原程序可以很好的被激活。

看来一切都很好,当然不是,不然就不会有下面的代码了,我又发现了一些问题,首先当主窗体不是活动窗口时,比如主窗体被隐藏了,而目前活动的窗体是其他窗体,则上面的代码无效。

另一个,如果主窗体前面有一个ShowModal的窗体,则上面的代码后,主窗体跑到ShowModal窗体的前面了。

只有继续探索了,看来问题出在SetForegroundWindow上,激活那个窗体都不好,因为那个窗体都有可能不在,有没有办法激活工程呢,我在Application中找方法,我找到Application.BringT oFront,也许这个有点用,于是新建一个工程,加一个Timer控件,然后每隔3秒调用一次Application.BringT oFront,运行看结果。

Electron中单例模式运行app的相关代码

Electron中单例模式运行app的相关代码

Electron中单例模式运⾏app的相关代码其中例举了代码如下:const { app } = require('electron')let myWindow = nullconst gotTheLock = app.requestSingleInstanceLock()if (!gotTheLock) {app.quit()} else {app.on('second-instance', (event, commandLine, workingDirectory) => {// 当运⾏第⼆个实例时,将会聚焦到myWindow这个窗⼝if (myWindow) {if (myWindow.isMinimized()) myWindow.restore()myWindow.focus()}})// 创建 myWindow, 加载应⽤的其余部分, etc...app.on('ready', () => {})}按照⽰例代码,可以很快的完成这⼀功能项但有⼀种情况⽐较特殊,需要修改上⾯的代码这种场景就是:如果app被隐藏到托盘中时,⼀般我们都会设置app不可见:myWindow.hide()此时app是不可见的状态,所以myWindow.restore()和myWindow.focus()是没有⽤的解决⽅法:在聚焦窗⼝时先调⽤myWindow.show()⽅法.最终代码如下:const { app } = require('electron')let myWindow = nullconst gotTheLock = app.requestSingleInstanceLock()if (!gotTheLock) {app.quit()} else {app.on('second-instance', (event, commandLine, workingDirectory) => {// 当运⾏第⼆个实例时,将会聚焦到myWindow这个窗⼝if (myWindow) {mainWindow.show()if (myWindow.isMinimized()) myWindow.restore()myWindow.focus()}})// 创建 myWindow, 加载应⽤的其余部分, etc...app.on('ready', () => {})}具体代码逻辑(如同我们项⽬使⽤的)在app应⽤创建⽂件上:let myWindow = null// 是否单例模式if (config.IsSingleInstances) {// 此⽅法的返回值表⽰你的应⽤程序实例是否成功取得了锁。

JS实现单例模式的6种方案汇总

JS实现单例模式的6种方案汇总

JS实现单例模式的6种方案汇总在JavaScript中,单例模式是一种常见的设计模式,用于确保一个类只有一个实例。

这在很多情况下非常有用,比如全局缓存,共享资源管理等。

下面将介绍6种常见的JavaScript实现单例模式的方案。

1.使用字面量对象:这是最简单的方式,直接使用字面量对象创建一个单例对象。

在这种方式下,只能创建一个对象,并且可以通过全局变量来访问它。

```javascriptconst singleton =name: 'Singleton Object',method: functioconsole.log('Singleton method called');}};```2.使用函数:可以将单例对象定义为一个函数,并将函数实例化后作为单例对象。

在这种方式下,仍然只能创建一个对象。

```javascriptfunction Singletoif (typeof Singleton.instance === 'object')return Singleton.instance;} = 'Singleton Object';this.method = functioconsole.log('Singleton method called');};Singleton.instance = this;const singleton = new Singleton(;```3.使用模块模式:在JavaScript中,可以使用模块模式将单例对象封装在一个闭包函数中。

只暴露一个公共接口,可以通过该接口访问单例对象。

```javascriptconst singleton = (functioconst name = 'Singleton Object';returnmethod: functioconsole.log('Singleton method called');getName: functioreturn name;}};})(;console.log(singleton.getName(); // 输出 "Singleton Object"```4.使用IIFE:IIFE(立即调用函数表达式)在JavaScript中常用于创建私有作用域。

C#中COM操作(一)---实例化

C#中COM操作(一)---实例化

C#中COM操作(⼀)---实例化⽤C#做WinForm程序,时间长了难免会遇到和COM组件打交道的地⽅,⽤什么⽅式创建COM对象也成了我们必须⾯对的⼀个问题.据我所知道的创建COM对象的⽅法⼀共有以下⼏种:1 使⽤.NET包装COM组件这是最简单的就是导⼊COM组件所在的DLL,让IDE⽣成.NET⼀个IL包装加到项⽬中,这样原来COM⾥⾯所有实现了IDispatch,Dual的COM 类型及其相关类型就可以直接在.NET程序⾥⾯使⽤,⽐如以前在2003时代,想要写⾃⼰的基于IE的浏览器,就得⼿动加⼊与IWebBrowser2接⼝相关的DLL,这种⽅式是⼤家最常⽤的,也是最傻⽠化的,因此也没什么可解释的.但是这种⽅式有个⾄命的缺点---不是所有的COM对象都能⽤这种⽅式导出.正如前⾯所说的,只有实现了IDispatch,Dual类型的接⼝才⽀持被导出,⽽且⾯对不同版本的COM或许会⽣成不⼀样的导出DLL,⽐如说A机器上写代码时导⼊了⼀个Jet2.6版本的包装DLL,代码编译了拿到B 机器上去运⾏,但是B机器上的Jet版本是2.8的,就可能会出现运⾏时错误.2 ⽤反射动态创建包括使⽤Type.GetTypeFromCLSID和Type.GetFromProgID两种⽅法获取COM对象的Type再创建.这种⽅式也好理解,就是说使⽤这两个⽅法之前,必须得知道COM对象的GUID或ProgID,好在这也不是什么难事,⼀般我们要使⼀个COM对象,多多少少都了解⼀些这个COM对象的GUID或ProgID信息.⽤这种⽅获取到了⼀个Type对象后,就可以⽤.NET⾥⾯通⽤的反射创建对象的⽅法来做了.这⾥给出⼀个创建JetEngine 的COM对象的代码实例:1public object GetActiveXObject(Guid clsid)2 {3 Type t = Type.GetTypeFromCLSID(clsid);4if (t == null) return null;56return Activator.CreateInstance(t);7 }89 Guid g = new Guid("DE88C160-FF2C-11D1-BB6F-00C04FAE22DA"); // JetEngine10object jet = GetActiveXObject(g);是不是觉得最后调⽤GetActiveXObject(g)的地⽅和IE⾥⾯Javascript⾥⾯⽤new ActiveXOjbect创建COM对象的⽅法很相像?3 声明CoCreateInstance外部函数,⽤这个函数去创建相应的COM实例M$在2005⾥⾯包装的WebBrowser控件内部就是⽤这个函数去创建的, 使⽤这种⽅式创建COM,就跟在C++⾥⾯不什么两样了.有⼀点需要说明的是,⼀般我们在代码中引⼊外部⽅法的时候,⽅法的参数和返回值的类型不⼀定是唯⼀的⼀种,只要在逻辑上相互能转化,⼀般都可以使⽤.⽐如说如下⼏种声明都是正确的:1 [return: MarshalAs(UnmanagedType.Interface)]2 [DllImport("ole32.dll", ExactSpelling=true, PreserveSig=false)]3public static extern object CoCreateInstance([In] ref Guid clsid,4 [MarshalAs(UnmanagedType.Interface)] object punkOuter, int context, [In] ref Guid iid);56 [DllImport("ole32.dll", ExactSpelling=true, PreserveSig=false)]7public static extern IntPtr CoCreateInstance([In] ref Guid clsid,8 IntPtr punkOuter, int context, [In] ref Guid iid);910 [DllImport("ole32.dll", ExactSpelling=true)]11public static extern int CoCreateInstance([In] ref Guid clsid,12 IntPtr punkOuter, int context, [In] ref Guid iid, [Out] out IntPtr pVoid);1314 [DllImport("ole32.dll", ExactSpelling=true)]15public static extern int CoCreateInstance([In] ref Guid clsid,16 [MarshalAs(UnmanagedType.Interface)] object punkOuter, int context,17 [In] ref Guid iid, [MarshalAs(UnmanagedType.Interface), Out] out object pVoid);甚⾄于当你有⾥⾯对应的接⼝类型的声明的时候,完全可以把上⾯的object或IntPtr换成相应的接⼝类型,前提是你的接⼝类型的声明⼀定要正确.读者中⽤C++做过COM的⼀定对这种⽅式记忆犹新吧,只不过这⾥不再需要什么CoInitialize和CoUninitialize,.NET内部⾃⼰帮你搞定了.顺便提⼀下,上⾯例⼦中的object与IntPtr声明是相通的,我们可以⽤Marshal.GetObjectForIUnknown和Marshal.GetIUnknownForObject这两个⽅法在object和IntPtr之间互转,前题当然是这两种⽅式所指向的都是COM对象才⾏.这种⽅式提供的传⼊参数最多,创建对象也最灵活.3.直接声明空成员的类可能很多程序员对于这个不太理解这是什么意思,没关系咱还是"⽤代码来说话".1 [ComImport, Guid("DE88C160-FF2C-11D1-BB6F-00C04FAE22DA")]2public class JetEngineClass3 {4 }56 [ComImport, CoClass(typeof(JetEngineClass)), Guid("9F63D980-FF25-11D1-BB6F-00C04FAE22DA")]7public interface IJetEngine8 {9void CompactDatabase(10 [In, MarshalAs(UnmanagedType.BStr)] string SourceConnection,11 [In, MarshalAs(UnmanagedType.BStr)] string Destconnection12 );13void RefreshCache([In, MarshalAs(UnmanagedType.Interface)] object Connection);14 }1516 JetEngineClass engine = new JetEngineClass();17 IJetEngine iengine = engine as IJetEngine;18// iengine即是所要⽤的接⼝的引⽤⼤家看到了上⾯声明的JetEngineClass类只有⼀个单单的类声明,但是没有⼀个成员声明,但是和⼀般的类声明有些不⼀样的是这个类多了两个特性(Attribute),把这个类和COM对象联系在⼀起的就是这两个特性了,其中⼀个是ComImportAttribute,这个特性指明了所作⽤的类是从COM对象中来的,GuidAttribute指明了COM对象的GUID,也就是说明了创建这个COM需⽤到的GUID。

.net core 执行一次的方法

.net core 执行一次的方法

一、概述在.NET Core中,执行一次的方法是指在应用程序启动后只执行一次的代码块或函数。

这些方法通常用于初始化应用程序的一些全局配置,或者进行一些只需要在应用程序启动时执行一次的逻辑。

本文将介绍.NET Core中执行一次的方法的几种实现方式以及它们的使用场景。

二、使用静态构造函数在.NET Core中,我们可以使用静态构造函数来实现执行一次的方法。

静态构造函数在类第一次被加载时执行,并且只执行一次。

这使得它成为一个很好的选择来执行一次的初始化逻辑。

静态构造函数的定义方式如下:```csharppublic class InitializationClass{static InitializationClass(){// 在这里编写需要执行一次的逻辑}}```使用静态构造函数的优势在于它的执行时机是在类第一次被加载时,这保证了它只会执行一次。

但是它也有一些限制,比如不能显式调用静态构造函数,无法传递参数等。

三、使用Lazy<T>类另一种实现执行一次的方法的方式是使用.NET Core中的Lazy<T>类。

Lazy<T>类可以延迟初始化,并且保证初始化逻辑只执行一次。

```csharppublic class InitializationClass{private static readonly Lazy<InitializationClass> _instance = new Lazy<InitializationClass>(() => new InitializationClass());public static InitializationClass Instance => _instance.Value;private InitializationClass(){// 在这里编写需要执行一次的逻辑}}```在上面的例子中,我们使用了Lazy<T>类来延迟初始化InitializationClass实例,并且通过静态属性Instance来获取实例。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

准备工作
这个操作必须要求你的文件系统是 NTFS 的。

FAT32文件系统不行哦。

右键点那个盘-> 属性-> 常规选项卡上-> 文件系统会显示你的文件系统。

如果是FAT32的系统,可以将它转成 NTFS 。

(易宝典提醒:转换成 NTFS 有可能会 带来一定麻烦。

比如,如果电脑上装了两个系统, 一个是 Windows 98、Windows ME 这 样早期的系统,老系统认不出 NTFS 的盘符。


1. 开始-> 在开始搜索里打cmd ->然后在上面结果列表里右键 cmd ->点以管理 员身份运行。

共皐(HQ.*
B^Lurm®a{v)

玄盘舷2 打开(O)
"id
丈屛呈紜:
NTF5
类型
如果你看到一个Windows需要您的许可才能继续的消息,别奇怪,点一下继续确认就行。

2. 打上下面这个命令,然后按回车运行(x代表你的盘符,用你具体的盘符字母替换
掉)。

con vert x: /fs: ntfs
打开(O】
p亘看洋有结果
P BE妻Internet
开始操作
从现有分区中割一块出来做个分区
1. 开始-> 右键计算机-> 管理
2.
在左侧找到存储下面的磁盘管理,点一下选中磁盘管理 3. 右键你要分割的那个分区,选压缩卷。

Windo/vs Live Messenger 下歎 最近隧用的项目 卜
建Widows 会匹
**!' Windows Update 网路 Windows Media Player
Windows 菲片滓
打开(6 彌苣理器(X) 搀零(£)•••
Windovvs DVD Maker
刚G}
所有程席 幵担壌真
默认 映射兩第匪輩圈"…
斷开网捐驱號(6・・
在卓面上显示⑸
重令名(朗)
4.在输入压缩空间量右边调节一个大小,默认情况下是允许的最大值,然后按压缩。

剩下多少空间没有用,可以压缩出来的空间不会超过现有分区大小的一半。


你看到一部分空间释放出来了,然后你可以在这部分空间上新建个分区(不管你
5.
L=_O ■ |“| 蜩| 文43^
・(CO M NTFS 如阴(MM 碗 SJTOtft,换 •a.・简单基專 NTFS
决咅!S 好住分区) -HD”.蔺 H 基畜 NTFS
f Ilf
*
—Ifi 盘 0 12402 G8 昧机
CD ROM 0
DVD (D :i JK 性『)
WRJlH)
6.
LJ (U 〕简瑩 SX NTFS 4_■ D. “ 置呈 i_*D»+ i^= 基K NTFS 基工 NTTS ni 状态良好憶统「忘动.页面文件,:驗. 扶誉良好住分区) 状态貝好I 主分区〕 曲Q & 124.02 GB 联叽 (C) 69.48 GB 状态良好( DATA 10^3 G 愈期 当 CD-ROM 0 DVD (D :) DATA2 ( 34.18 GB 状杏良好] 1013 G 未尹配 ■未细■主分区
已从现有分区中分割出了一块. 现在可以在空白位置创建新分区了 右键空白的空间-> 新建简单卷。

(C) 69>43GBI 状誉慣好c 无專璀 □ATA2 ( 34,1 H GB
DATA m 右G
把未分配的空间加到现有分区里
另外教你一个小贴示,如果在磁盘管理器里看到紧跟着一个盘符后面有一块未分配空间,这部分空间可以并到那个盘符:
1. 右键要扩展的分区(那个分区后面必须紧跟着有未分配的空间),然后按扩展卷。

扩星卷向爭
迭輝晞盘
您可以用至少一个蹴盘上的空间来扩展卷o 豔罪鬻I舊脣器驛蠶可用空间’因対不能将碇盘转换为动态磁盘,或可用叨:
卷大小总数⑷〕:最大可用
空间重减选择空间里曲即
CE):
本文链接匕上一莹取消
已选的⑸:。

相关文档
最新文档