SysWoW64 System32 Sysnative

março 4th, 2015 by franklin Sem comentários »

Estava fazendo um script em php para limpar o diretório C:\WINDOWS\System32\inetsrv\backup de tempos em tempos, mas meu script informava que o diretório não existia, e ele estava lá, conseguia ver no explorer.

Resumindo, a máquina que eu estava fazendo isso era em 64bits, isso aconteceu porque o php do servidor rodava em 32bits, pesquisando descobri que uma aplicação 32bits quando acessa o diretório C:\WINDOWS\System32 é redirecionada para o diretório C:\WINDOWS\SysWoW64, e o diretório C:\WINDOWS\SysWoW64\inetsrv\backup realmente não exisita.

Como fiz para contornar a situação? Com o tempo aprendi que a Microsoft adora gambiarra, diria até que ama. Para que o script funcionasse, precisei utilizar o path C:\WINDOWS\sysnative\inetsrv\backup.

Aplicações em 32bits para acessar o diretório system32, precisam usar o path sysnative, mas se tu for no explorer e tentar acessar o c:\windows\sysnative, tu não vai conseguir, porque o diretório não é acessível em aplicações 64bits, somente 32bits :D.

Link da explicação detalhada: http://comments.gmane.org/gmane.os.cygwin/148335
Link da microsoft sobre o File System Redirector: https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx

Subir IPv6 no windows por linha de comando

fevereiro 3rd, 2015 by franklin Sem comentários »

Para configurar um ipv6, gateway e DNSs no windows pelo prompt, utilize os respectivos comandos:

1
2
3
4
netsh interface ipv6 add address "Local Area Connection 2" [ipv6 address]
netsh interface ipv6 add route ::/0 "Local Area Connection 2" [default gateway ipv6 address]
netsh interface ipv6 add dns "Local Area Connection 2"  [ipv6 address]
netsh interface ipv6 add dns "Local Area Connection 2" [ipv6 address] index=2

Lembrando que “Local Area Connection 2” é o nome da placa de rede em que está sendo configurado o IPv6

Baseado no seguinte post: https://www.fir3net.com/Microsoft/General/how-do-i-configure-ipv6-in-windows-xp.html

Alterar level trust somente para um site

janeiro 29th, 2015 by franklin Sem comentários »

Caso seu servidor trabalhe em partial trust e com allowOverride = false, é possível configurar o modo full trust para um único site, para isso é necessário entrar em contato com o seu host e solicitar que insira as linhas abaixo, antes da tag </configuration>, no web.config do asp.net.

    <location path="%VHOST%">
        <system.web>
            <trust level="Full" />
        </system.web>
    </location>

Onde %VHOST% é o nome cadastrado para o seu site no IIS do servidor. Com essa configuração o servidor continua trabalhando em partial trust com exceção do site informado em %VHOST% 🙂
Algumas empresas de hospedagem não aceitam essa configuração, mas não custa nada dar uma chorada 😛

Desabilitar gerenciador do servidor no logon

janeiro 20th, 2015 by franklin Sem comentários »

Para desabilitar a janela do gerenciador do servidor nos windows 2012, é possível utilizar o comando abaixo

1
REG.exe Add HKCU\Software\Microsoft\ServerManager /V DoNotOpenServerManagerAtLogon /t REG_DWORD /D 0x1 /F

Isso irá criar a chave no registro para desabilitar o gerenciador do servidor.

Mais informaçõs no technet

Exibir interfaces escondidas no windows

novembro 17th, 2014 by franklin Sem comentários »

Passei por esse problema quando eu tinha adicionado uma interface na máquina e renomeado como batatinha, removi a interface batatinha e adicionei outra interface, tentei renomear para batatinha mas não consegui, deu erro informando que batatinha já existia, então descobri que a interface batatinha realmente existia, ela estava oculta na máquina. Para eu conseguir ver tive que fazer o seguinte, abrir o prompt e executar

set devmgr_show_nonpresent_devices=1

na sequência executa

start devmgmt.msc

na janela que abrir clica em exibir > mostrar dispositivos ocultos
agora consegui ver a interface batatinha e desinstalar ela, para depois adicionar novamente.
Fontes: https://social.technet.microsoft.com/Forums/windowsserver
http://support.microsoft.com/kb/315539/en-us

Como fazer rollback do iOS 8 para o iOS 7?

setembro 18th, 2014 by franklin Sem comentários »

Baixou o iOS 8 mas seu iPhone ficou lento ou não gostou da nova versão? É possível fazer o downgrade da versão do iOS, para isso é necessário ter o firmware .ipsw do iOS 7.1.2, que foi a última atualização da versão 7. Normalmente, se você tiver sorte, é possível encontrar o arquivo .ipsw em seu mac no caminho abaixo

%teuUsuario%/Library/Application Support/iTunes/iPhone firmware

no windows é possível encontrar em

C:\Users\%teuUsuario%\AppData\Roaming\Apple Computer\iTunes\iPhone Software Updates

onde %teuUsuario% é o nome do usuário que você usa em sua máquina.

Se o arquivo estiver lá, abra o iTunes, conecte seu iPhone e clique em Restaurar iPhone com a tecla shift(se for windows) » Read more: Como fazer rollback do iOS 8 para o iOS 7?

FTP no sublime text 2

setembro 15th, 2014 by franklin Sem comentários »

Primeiro temos que habilitar o package controle, para isso aperte no teclado ctrl + ` ou vá em view > show console e cole o texto abaixo

1
 import urllib2,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); open( os.path.join( ipp, pf), 'wb' ).write(by) if dh == h else None; print('Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh != h else 'Please restart Sublime Text to finish installation')

Depois, no windows, aperte ctrl+shift+p, e cole isso

Package Control: Install Package

Quando o repositório carregar, procure por SFTP e clique para instalar 🙂

Com base nos links abaixo:
https://sublime.wbond.net/installation#st2
http://wbond.net/sublime_packages/sftp/installation

Conversão de .doc ou .docx para .pdf no asp.net com Microsoft.Office.Interop.Word

setembro 11th, 2014 by franklin Sem comentários »

Conseguiu utilizar o Microsoft.Office.Interop.Word? Que bom, não conseguiu? Então desista, não perca horas e horas tentando fazer funcionar dando permissões diferentes na config DCOM para o Documento do microsoft office word, pois a própria microsoft não recomenda o componente para a utilização de sistemas em asp ou asp.net, conforme o link abaixo:

http://support.microsoft.com/kb/257757

A Microsoft atualmente não recomenda e não oferece suporte, aplicativos de automação do Microsoft Office de qualquer aplicativo cliente autônomo, não interativo ou componente (incluindo ASP, ASP.NET, DCOM e serviços NT), como o Office pode apresentar comportamento instável e/ou bloqueio quando o Office é executado nesse ambiente.”
» Read more: Conversão de .doc ou .docx para .pdf no asp.net com Microsoft.Office.Interop.Word

Exemplo de sessão no ASP.NET

agosto 21st, 2014 by franklin Sem comentários »

Crie os respectivos arquivos index.aspx.cs e index.aspx
Abaixo o index.aspx.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
public partial class index : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
 
    protected void btnCreateSession_Click(object sender, EventArgs e)
    {
        Session["Username"] = txtUserName.Text.Trim();
    }
 
    protected void btnRetrieveSession_Click(object sender, EventArgs e)
    {
        DisplaySessionValue();
    }
 
    protected void btnRemoveSession_Click(object sender, EventArgs e)
    {
        Session.Remove("Username");
 
        DisplaySessionValue();
    }
 
    protected void btnRemoveAll_Click(object sender, EventArgs e)
    {
        Session.RemoveAll();
 
        DisplaySessionValue();
    }
 
    private void DisplaySessionValue()
    {
        if (Session["Username"] != null)
            lblSessionValue.Text = Convert.ToString(Session["Username"]);
        else
            lblSessionValue.Text = "No Value has been stored in session";
    }
}

Abaixo o index.aspx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>ASP.net How to use session</title>
    <style type="text/css">
     .txtInput
     {
         width:250px; height:28px; paddiang:3px;
     }   
     div
     {
         margin:5px;
     }
     .validator
     {
         color:Red;
     }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
         <fieldset>
            <h3>How to use Session</h3>
            <div>
            Userame:<br />
            <asp:TextBox ID="txtUserName" runat="server" MaxLength="50"></asp:TextBox>
            <asp:RequiredFieldValidator ID="rfvFirstName" runat="server" Display="Dynamic"
             CssClass="validator"  ControlToValidate="txtUserName"
             ErrorMessage="Username is required"></asp:RequiredFieldValidator>
            </div>
            <div>
                <asp:Button ID="btnCreateSession" runat="server" 
                    Text="Click to Create Session" onclick="btnCreateSession_Click" />
                &nbsp;
                <asp:Button ID="btnRetrieveSession" runat="server" CausesValidation="false" 
                    Text="Click to Retrieve Session Value" onclick="btnRetrieveSession_Click" />
                &nbsp;
                <asp:Button ID="btnRemoveSession" runat="server" CausesValidation="false" 
                    Text="Click to Remove Session Value" onclick="btnRemoveSession_Click" />
                &nbsp;
                <asp:Button ID="btnRemoveAll" runat="server" CausesValidation="false" 
                    Text="Click to Remove All Sessions" onclick="btnRemoveAll_Click" />
            </div>
            <p>
                Note: 1st create a session by providing user name in text field, then you can retrieve the value from session.
            </p>
            <div>
                Value stored in Session: 
                <strong><asp:Label ID="lblSessionValue" runat="server"></asp:Label></strong>
            </div>
        </fieldset>
    </div>
    </form>
</body>
</html>

Quebra de linha em ASP

agosto 18th, 2014 by franklin Sem comentários »

No ASP clássico a quebra de linha é vbCrLf

1
&lt;% response.write "Oi" &amp; vbCrLf &amp; "Tudo bem?" %&gt;

É importante usar o vbCrLf, além da tag
, pois o
quebra a linha no html, se for enviar um email com muitos caracteres e não houver essa quebra no asp, pode haver quebra na mensagem devido à não utilização da quebra de linha no asp, conforme é explicado no link